问题标签 [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.
macos - 在 macOS Sierra 上扩展堆栈大小
当我尝试使用命令扩展 macOS Sierra 上的堆栈大小时ulimit -s unlimited
,终端会打印下一条消息:
-bash:ulimit:堆栈大小:无法修改限制:不允许操作。
我也尝试过使用sudo ulimit -s unlimited
,但它也没有离开我。有人知道吗?
c++ - 如何在 Visual Studio (2015) 中增加非托管单元测试的堆栈大小?异常代码:C00000FD
我正在尝试在 VS2015 中创建一个单元测试项目。该项目已正确构建并运行,直到我尝试创建大型结构的局部变量。
我的代码如下所示:
当我删除 largeStructure 定义时,测试通过。当我添加 largeStructure 定义时,它失败并出现异常代码:C00000FD。我用谷歌搜索了这段代码,发现它是堆栈溢出。
我试图增加测试项目属性中的堆栈大小(属性 -> 链接器 -> 系统 -> 堆栈保留大小)。
我还尝试在测试代码和 stdafx.cpp 中添加#pragma comment(linker, "/STACK:10000000")。没有任何效果。
您对如何处理此错误有任何其他建议吗?
scala - 在 Maven 构建期间增加 Scala 堆栈大小
使用 maven (mvn compile) 编译 scala 项目时,出现错误:java.lang.StackOverflowError。我也从 eclipse 中得到了同样的结果,但可以通过提供额外的命令行参数来解决它: -J-Xss256m for scala compiler ,如此处给出的How to increase scala stack size
但是我在执行“mvn compile”时遇到了同样的错误。我该如何解决这个问题?基本上如何在通过 maven 构建时增加 scala 堆栈大小
polynomials - 如何在 Pari/Gp 中增加足够的堆栈大小以使命令正常工作
我正在使用 GP 和最小多项式,如下所示在 ASUS x75 上运行:
第一个命令成功出现,而下面的第二个命令确实成功完成并给出了 allocatemem() 错误。如何在不使计算机过热或程序耗尽的情况下使第二个命令工作?并且需要以下命令的整个输出。谢谢您的帮助。
java - 无法使用 _JAVA_OPTIONS 设置 -Xss
我有一些应用程序只能在增加堆栈大小(java 选项 -Xss1M)的情况下才能正常运行,否则会出现段错误。如果我在命令行中使用 -Xss1M 选项,它就可以工作。要将这个解决方案集成到我的 Jenkins 工作中,我更喜欢使用 _JAVA_OPTIONS 环境变量方法而不是脚本修改。
令我惊讶的是,如果我说“export _JAVA_OPTIONS=-Xss1M”,它就不起作用。我还尝试设置 JAVA_OPTS 和 JAVA_TOOL_OPTIONS,使用单引号和双引号。结果总是一样的。特别奇怪的是,Java 写了“选择”选项,尽管它没有效果:
如果我使用 -Xss1M 作为命令行选项运行相同的命令,它可以工作:
在 SunOS 5.10 和 CentOS 4 机器上,我确实有相同的行为。在两者上我都使用 JDK 6。我使用了https://docs.oracle.com/javase/6/docs/platform/jvmti/jvmti.html#tooloptions和https://docs.oracle.com/cd/E14592_01/ doc.10142/e14608/app_orminweblogic.htm作为参考和_JAVA_OPTIONS JAVA_TOOL_OPTIONS 和 JAVA_OPTS 之间的区别,以查看 _JAVA_OPTIONS 用法的示例。我没有发现任何提及好像 _JAVA_OPTIONS 不接受某些选项等。所以我想它也应该与 -Xss 一起使用。谁能指出,我的错误在哪里,请?
更新 1:我确信命令行选项规范与 _JAVA_OPTIONS 真的不是等价的东西。不仅适用于 -Xss,还适用于其他选项。
我在我的 Ubuntu 14.04 上使用了 Java 7 和 -XshowSettings:all 选项来查看这些选项是如何在“内部”Java 中看到的。我执行了 3 个命令并比较了它们的输出(不同之处在于第一行)。
$ java -XshowSettings:all -version 2>&1 | 头-5
$ _JAVA_OPTIONS="-Xms2048m -Xmx2048m" java -XshowSettings:all -version 2>&1 | 头-5
$ java -Xms2048m -Xmx2048m -XshowSettings:all -version 2>&1 | 头-5
这意味着相同的选项 -Xms、-Xmx 确实有,但当我们使用 _JAVA_OPTIONS 方法时效果有限。这同样适用于 -Xss:
$ _JAVA_OPTIONS="-Xss1m" java -XshowSettings:all -version 2>&1 | 头-5
$ java -Xss1m -XshowSettings:all -version 2>&1 | 头-5
不同之处在于它仅在 -Xss1m 是命令行选项时才指示“堆栈大小:1.00M”。但为什么!为什么不在 _JAVA_OPTIONS 下提供完全等效的命令行?
更新 2 :从http://hg.openjdk.java.net/jdk7/jdk7/hotspot/archive/tip.tar.gz和http下载了 Java 源代码的“片段”(“hotspot”和“jdk”) : //hg.openjdk.java.net/jdk7/jdk7/jdk/archive/tip.tar.gz。注入大量打印输出并设法从源代码构建 java 和所有相关库(libjvm.so、rt.jar),然后运行它。
根本原因是来自 _JAVA_OPTIONS 的选项存储在数组 _jvm_args_array 中,该数组不用于 jdk-9b8c96f96a0f/src/solaris/bin/java_md.c 中的 thr_create() 调用。
有一个地方我们尝试评估堆栈大小,它是从 ContinueInNewThread(...) 调用 JNI_GetDefaultJavaVMInitArgs(void *args_),但它只返回等于 320K 的默认堆栈大小值并且不使用 _JAVA_OPTIONS . _JAVA_OPTIONS 的解析稍后发生在看起来完全没有意义的已创建线程中。
我编写了下面的调用序列来说明可能对它感兴趣的人正在发生的事情(缩进对应于调用深度)。
我现在正在检查如何向 OpenJDK 报告错误。即使 OpenJDK 认为这样的实现设计得当,在命令行帮助和文档中也应该清楚地说明 -Xss 不能在 _JAVA_OPTIONS 中工作。
linux - Linux中的堆栈内存在物理上是连续的吗?
据我所知,堆栈内存在虚拟内存地址中是连续的,但堆栈内存在物理上也是连续的?这与堆栈大小限制有关吗?
编辑:
我曾经认为栈内存在物理上不一定是连续的,但是为什么我们认为栈内存总是比堆内存快呢?如果它在物理上不是连续的,堆栈如何更好地利用缓存?还有一件事总是让我感到困惑,cpu在数据段中执行指令,它不在虚拟内存中的堆栈段附近,我认为操作系统不会使堆栈段和数据段在物理上彼此靠近,所以这可能会损害缓存效果,您怎么看?
再次编辑:
也许我应该举一个例子来更好地表达自己,如果我们想对大量数字进行排序,使用数组来存储数字比使用列表更好,因为每个列表节点都可能由 构造malloc
,所以它可能没有充分利用缓存,这就是为什么我说堆栈内存比堆内存快。
visual-studio - Cmake 更改堆栈大小
有没有办法从Cmake更改堆栈大小?
我只发现一个论坛帖子提到CMAKE_CXX_STACK_SIZE
,但我找不到这个命令的文档。理想情况下,该命令应该适用于Visual Studio C++和gcc。
com - 如何增加 ASP.NET Core 二进制文件(32 位)的堆栈大小?
是否可以增加 ASP.NET core 2 二进制文件的堆栈大小?我必须使用一个 32 位 COM 互操作组件,它恰好在某些定义的条件下破坏了堆栈。这不是无限递归,只是在请求最大可能数据集时碰巧触及限制的工作负载,因此增加堆栈可能是一个可以接受的解决方法。
通过 EDITBIN 修改堆栈大小仅在直接应用于 dotnet.exe 时才有效,这显然不是首选解决方案。
recursion - 为什么这个递归函数超过调用堆栈大小?
我正在尝试编写一个函数来查找 1 到 20 之间的所有整数除以的最小数字。(我们称之为条件 D)
这是我的解决方案,它以某种方式超出了调用堆栈大小限制。
在某处我对此的推理是错误的,但这是我的看法(请在我错的地方纠正我):
使用不满足条件 D 的数字 N 调用此函数将导致再次使用 N + 1 调用该函数。最终,当它达到应满足条件 D 的数字 M 时,while 循环将一直运行,并且函数返回数字 M 并且不再有递归调用。
但是我在运行它时收到此错误:
函数 findSmallest(num){ ^
RangeError:超出最大调用堆栈大小
我知道这样的错误几乎总是由于递归函数没有达到基本情况。这是这里的问题吗?如果是,问题出在哪里?