问题标签 [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.
java - 如何在每个线程的基础上限制 Java 的堆栈大小?
标题问了一切,真的。如果无法直接在 JVM 中设置单个线程的堆栈大小,是否有其他选择?
c++ - 增加 cgo 中的最大堆栈大小
我知道在 c++ 中,默认的最大堆栈大小为 1MB(在 Windows 上)。为了增加 gcc 和 g++ 的限制,我阅读了这个论坛帖子。这个答案似乎是正确的
好吧,我不知道您是否可以将其设置为无限制,但是(假设 Windows)您可以尝试传递
-Wl,--stack,<size>
(<size>
以字节为单位)来设置堆栈大小。(通过一些测试,默认值似乎是 2 MB)
我怎样才能通过 cgo 传递同样的东西?
rust - 如何在 Rust 中配置默认堆栈大小
我一直在 MacOS 上的 Rust 中开发一个 winit 图形应用程序。我基于链接器 (ld) 的默认堆栈大小似乎是 8MB。
我想知道的是:
1. 图形应用程序等必须增加其目标系统上的默认堆栈大小有多普遍?8MB应该合理吗?
2. 我知道在 MacOS 上我不能将它作为子线程运行,我猜窗口库不支持子线程事件循环。如果更大的堆栈大小是合理的,那么在 Rust 中配置它的最佳平台无关方式是什么?我构建项目的唯一cargo rustc -- -C link-args=-Wl,-stack_size,0x100000000
方法是在构建依赖项之后调用。.cargo/config
如果我使用上述选项创建文件,则依赖项(如libc
失败)将堆栈大小设置为链接器参数仅适用于二进制文件。
我的尝试.cargo/crate
:
产生的错误:
javascript - Node.js RangeError:超出最大调用堆栈大小
我正在尝试从我的数组中生成所有可能的名称组合,productsDeduped
然后将生成的组合存储为productTags
数组。这是我的代码:
我收到此错误:
知道如何解决这个问题;我认为是因为请求量很大?
编辑:
我只是看得更深,当我将productNameStrings
字符串数组限制为只有 9 个元素时,代码可以正常工作;但如果它在数组中有 10 个或更多字符串,它就会开始给我这个错误!仍然不知道如何修复它。
assembly - 如何找出堆栈的开始和结束的地址?
我需要使用程序集插入来获取堆栈的开始和结束地址。据我了解,SP寄存器指向堆栈的开头,但是我如何找到结尾呢?我说的是 i386 架构。我意识到SP是栈顶,BP是栈底。所以我可以使用 BP-SP 计算大小?
还有一个问题。堆栈大小是静态的吗?启动后没有变化?
c - 如何测量 C 中任意函数调用使用的堆栈数量?
我们公司购买了一个专有的 C 函数:我们有一个编译库ProcessData.a
和一个接口文件来调用它:
我们想在ARM
嵌入式 CPU 上使用这个函数,并且想知道它可能使用多少堆栈空间。
问题:如何测量任意函数的堆栈使用情况?
到目前为止,我尝试的是实现以下辅助函数:
然后在函数调用之前和之后使用它们:
但这似乎是一个危险的黑客攻击——尤其是我4
从stackPointerBeforeCall
下面减去并覆盖所有内容的部分。有没有更好的办法?
prolog - 在 Swi-prolog 中增加运行时的堆栈大小
我set_prolog_flag(stack_limit, 5000000000).
在我的代码中使用过。
但后来我收到以下错误:
ERROR: No permission to modify static procedure "set_prolog_flag/2"
看来我没有修改stack_size的权限。有解决办法吗?
rust - Rust - 调试与发布模式的堆栈大小不同吗?
考虑以下程序:
当我运行时cargo build && ./target/debug/recursive_call
,这会在以下情况下崩溃x: 58152
:
而当我跑步时 cargo build --release && ./target/release/recursive_call
,这只会在以下情况下崩溃x: 104728
:
我想知道这种行为差异来自哪里?发布与调试模式的堆栈大小是否不同?或者这是因为我缺少一些编译时优化(如果是这样,那么优化是什么?)
c - 设置共享库的堆栈大小
有没有办法(使用 gcc)来设置共享库的堆栈大小?
我构建了一个.so,其中包含一个使用大缓冲区作为局部变量的函数。
像这样的东西:
我添加了该选项-Wl,-z,stack-size=4100000
,但它没有效果(甚至没有错误消息)。
顺便说一句,这个库是从java代码调用的(使用JNA)。
由于我没有找到有关此特殊问题的任何帖子,因此恐怕不可能...
stack-overflow - 使用 gp2c 时堆栈溢出,但在同一程序中直接使用 gp 时不会出现堆栈溢出 (PARI/GP)
所以我想用 gp 从一个特定的 projecteuler 问题中计算一个总和。这是不可理解的代码:
这段代码需要两到三分钟才能在我相当普通的机器上输出答案,但它不会超出默认值parisize = 8000000
(大约 8 MB 内存)。
现在,我在某处读到将脚本gp2c
编译为代码可以提高性能的文章。gp
c
所以我只是做了一个program.gp
文件:
并运行它gp2c-run program.gp
。
在出现的交互式提示中,我刚刚执行了calculate()
. 然而,令我惊讶的是,我得到了一个堆栈溢出,它要求我增加堆栈大小,即使我更改parisizemax
为几乎 2 GB。
为什么同一个程序在编译时c
需要这么多额外的内存?作为参考,使用 n = 1000 而不是 10000 的同一程序仅在将堆栈大小增加到256000000
(250 MB) 后才显示答案,而仅在使用gp
. 有些东西没有加起来。