问题标签 [stack-size]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1818 浏览

python - Python 线程 stack_size 和 segfaults

一个网络爬虫脚本,最多产生 500 个线程,每个线程基本上请求从远程服务器提供的某些数据,每个服务器的回复在内容和大小上都与其他服务器不同。

我将 stack_size 设置为线程的 756K

这使我能够拥有足够数量的所需线程并完成大部分工作和请求。但是由于某些服务器的响应比其他服务器大,并且当一个线程获得这种响应时,脚本会因 SIGSEGV 而死。

stack_sizes 超过 756K 使得不可能同时拥有所需数量的线程。

关于如何在不崩溃的情况下继续使用给定的 stack_size 的任何建议?以及如何获取任何给定线程的当前使用的 stack_size?

0 投票
6 回答
789 浏览

c++ - 如何确定一个对象是否应该在堆栈上?

我一直在寻找在 C++ 中在堆栈或堆上分配对象的经验法则。我在这里找到了很多关于 SO 的讨论。很多人说,这关乎一个物体的生命周期。如果您需要比函数范围更长的生命周期,请将其放入堆中。这很有意义。

但是让我感到困惑的是,许多人说,如果对象很小,就将它们分配给堆栈。如果对象很大,则将其放入堆中。但是他们都没有说如何识别物体是否大?

我有以下问题,

  1. 如何识别物体是否大?
  2. 堆栈的最大大小是多少?每个操作系统会有不同的堆栈大小?
  3. 我有一个包装类vector<string>。它将有大约 100 个项目。如果我将此类分配给堆栈,它会导致堆栈溢出吗?我试过这个,但效果很好。不确定我做错了什么。
0 投票
4 回答
11304 浏览

java - 在运行一段时间后,可以获取 Java 中线程使用的实际堆栈大小吗?

这个想法是帮助确定给定 Java 应用程序的最佳堆栈大小。

可以使用此信息完成的一件事是创建一个堆栈大小范围表,线程可以在退出时对其进行修改,并且可以在应用程序退出时定期转储。

编辑:这是在具有我无法访问探查器访问的真实工作负载的客户机器上运行的上下文中。

EDIT2:作为对一个答案的回应,在(IIRC)每个线程 256Kb 时,我有一段时间想知道这与实际需要的东西有多接近(我也想知道这个问题是否可能不是很相关,因为堆栈空间可能是按需分配)。我们有一个基于消息传递和高度线程化的应用服务器,可在从 ARM 手持设备到八核 Linux 再到中型机和大型机的所有设备上运行 - 了解我们可以在哪里(以及是否)可以交易会很好具有许多消息处理程序的系统上的堆的堆栈空间。

有一些类似的问题很有趣,但它们是本机/操作系统特定的:

0 投票
3 回答
1037 浏览

stack - 哪种语言/平台没有固定的堆栈大小?

某些语言或平台是否没有固定大小的堆栈,因此不容易溢出?我记得在 UNIX 上使用 C,堆栈很难溢出,而在 Win 3.1 的日子里,堆栈很容易溢出。

0 投票
3 回答
19512 浏览

linux - 如何确定Linux中程序的堆栈大小?

如何确定 linux 中程序的当前堆栈大小?

据说每个程序的堆栈大小在 linux 中为 8 MB,但是当您使用 cat /proc//mmap 时,它会显示不同的大小。

另外,如何确定相关线程的堆栈大小?既然说线程有自己的私有栈?

0 投票
2 回答
7174 浏览

java - 如何在 Eclipse 中设置 -Xss?

我的问题是我想在 Eclipse 中运行 Java 项目时增加默认堆栈大小。我试过寻找答案,看起来我需要将 -Xss 选项设置为更大的数字,但我不知道如何访问/设置这个值。

我在运行 Eclipse 3.6.0 的 Windows 机器上。我将如何设置此选项?我想,具体来说,我正在询问我如何能的步骤

  1. 找出堆栈大小的默认值是多少,以及
  2. 将该值设置为更高的值。

谢谢!

0 投票
2 回答
5493 浏览

makefile - 在makefile中设置堆栈大小?

我知道如何在命令行中将堆栈大小设置为无限制:

而且,在 bash 中,当我将堆栈大小设置为无限制时,我的代码会成功运行并终止。

我可以在makefile(使用g++作为编译器)中将堆栈大小设置为无限制(或某个指定大小)吗?如果是这样,怎么做?

注意:我只能提交我的源文件(*.cpp、*.h)和我的项目的 makefile。也就是说,(1)运行makefile,(2)运行代码。因此,事先没有执行任何脚本或其他特殊指令,这就是为什么必须在 makefile 中进行更改......除非有人有其他/更好/聪明的想法?

提前致谢!

0 投票
1 回答
218 浏览

java - Java:减少堆栈大小会加速频繁的方法调用吗?

我一直在阅读有关增加 JVM 堆栈大小的信息(即允许更深入的递归)。

但我问自己,减少堆栈大小会加速方法调用吗?

可能我的理解是错误的,但我假设每个堆栈的分配速度(不仅用于递归方法调用)取决于它的大小。

有人可以指出我的基准,或者至少指向这个主题的背景信息吗?

谢谢!

0 投票
2 回答
11103 浏览

windows - Windows 上的线程堆栈大小 (Visual C++)

是否有调用来确定正在运行的线程的堆栈大小?我一直在查看 MSDN 线程函数文档,但似乎找不到。

0 投票
1 回答
4357 浏览

gdb - gdb 确定堆栈大小,在命令列表中有条件

是否可以在 gdb 脚本中找出堆栈大小(= 堆栈中的帧数)并将其用作命令列表中的条件?(通过 gdb 脚本,我的意思是可以作为“gdb --command='gdb_script' executable”提供给 gdb 的命令列表)

是否可以在命令列表中包含条件?我正在寻找这样的东西(在伪代码中):

谢谢你和亲切的问候,伯恩德。