问题标签 [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 回答
59 浏览

java - 如何在每个线程的基础上限制 Java 的堆栈大小?

标题问了一切,真的。如果无法直接在 JVM 中设置单个线程的堆栈大小,是否有其他选择?

0 投票
0 回答
205 浏览

c++ - 增加 cgo 中的最大堆栈大小

我从这篇文章的第一个答案中使用 c++ 和 GO

我知道在 c++ 中,默认的最大堆栈大小为 1MB(在 Windows 上)。为了增加 gcc 和 g++ 的限制,我阅读了这个论坛帖子。这个答案似乎是正确的

好吧,我不知道您是否可以将其设置为无限制,但是(假设 Windows)您可以尝试传递 -Wl,--stack,<size><size>以字节为单位)来设置堆栈大小。

(通过一些测试,默认值似乎是 2 MB)

我怎样才能通过 cgo 传递同样的东西?

0 投票
0 回答
2194 浏览

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

产生的错误:

0 投票
1 回答
1758 浏览

javascript - Node.js RangeError:超出最大调用堆栈大小

我正在尝试从我的数组中生成所有可能的名称组合,productsDeduped然后将生成的组合存储为productTags数组。这是我的代码:

我收到此错误:

知道如何解决这个问题;我认为是因为请求量很大?

编辑: 我只是看得更深,当我将productNameStrings字符串数组限制为只有 9 个元素时,代码可以正常工作;但如果它在数组中有 10 个或更多字符串,它就会开始给我这个错误!仍然不知道如何修复它。

0 投票
1 回答
337 浏览

assembly - 如何找出堆栈的开始和结束的地址?

我需要使用程序集插入来获取堆栈的开始和结束地址。据我了解,SP寄存器指向堆栈的开头,但是我如何找到结尾呢?我说的是 i386 架构。我意识到SP是栈顶,BP是栈底。所以我可以使用 BP-SP 计算大小?

还有一个问题。堆栈大小是静态的吗?启动后没有变化?

0 投票
2 回答
88 浏览

c - 如何测量 C 中任意函数调用使用的堆栈数量?

我们公司购买了一个专有的 C 函数:我们有一个编译库ProcessData.a和一个接口文件来调用它:

我们想在ARM嵌入式 CPU 上使用这个函数,并且想知道它可能使用多少堆栈空间。

问题:如何测量任意函数的堆栈使用情况

到目前为止,我尝试的是实现以下辅助函数:

然后在函数调用之前和之后使用它们:

但这似乎是一个危险的黑客攻击——尤其是我4stackPointerBeforeCall下面减去并覆盖所有内容的部分。有没有更好的办法?

0 投票
1 回答
160 浏览

prolog - 在 Swi-prolog 中增加运行时的堆栈大小

set_prolog_flag(stack_limit, 5000000000).在我的代码中使用过。

但后来我收到以下错误:

ERROR: No permission to modify static procedure "set_prolog_flag/2"

看来我没有修改stack_size的权限。有解决办法吗?

0 投票
2 回答
244 浏览

rust - Rust - 调试与发布模式的堆栈大小不同吗?

考虑以下程序:

当我运行时cargo build && ./target/debug/recursive_call,这会在以下情况下崩溃x: 58152

而当我跑步时 cargo build --release && ./target/release/recursive_call,这只会在以下情况下崩溃x: 104728

我想知道这种行为差异来自哪里?发布与调试模式的堆栈大小是否不同?或者这是因为我缺少一些编译时优化(如果是这样,那么优化是什么?)

0 投票
1 回答
85 浏览

c - 设置共享库的堆栈大小

有没有办法(使用 gcc)来设置共享库的堆栈大小?
我构建了一个.so,其中包含一个使用大缓冲区作为局部变量的函数。
像这样的东西:

我添加了该选项-Wl,-z,stack-size=4100000,但它没有效果(甚至没有错误消息)。
顺便说一句,这个库是从java代码调用的(使用JNA)。
由于我没有找到有关此特殊问题的任何帖子,因此恐怕不可能...

0 投票
1 回答
57 浏览

stack-overflow - 使用 gp2c 时堆栈溢出,但在同一程序中直接使用 gp 时不会出现堆栈溢出 (PARI/GP)

所以我想用 gp 从一个特定的 projecteuler 问题中计算一个总和。这是不可理解的代码:

这段代码需要两到三分钟才能在我相当普通的机器上输出答案,但它不会超出默认值parisize = 8000000(大约 8 MB 内存)。

现在,我在某处读到将脚本gp2c编译为代码可以提高性能的文章。gpc

所以我只是做了一个program.gp文件:

并运行它gp2c-run program.gp

在出现的交互式提示中,我刚刚执行了calculate(). 然而,令我惊讶的是,我得到了一个堆栈溢出,它要求我增加堆栈大小,即使我更改parisizemax为几乎 2 GB。

为什么同一个程序在编译时c需要这么多额外的内存?作为参考,使用 n = 1000 而不是 10000 的同一程序仅在将堆栈大小增加到256000000(250 MB) 后才显示答案,而仅在使用gp. 有些东西没有加起来。