问题标签 [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 投票
0 回答
1113 浏览

c# - 单声道、正则表达式和堆栈大小

System.Text.RegularExpressions.Regex我正在移植一个用于解析 C/C++ 包含源文件的 C# 软件。它们作为字符串完全加载到内存中,然后只用正则表达式处理。

它在 Windows 上完美运行,但在 Linux 上运行的 Mono 在尝试解析较大的文件时失败,并引发了从 deep inside 引发的堆栈溢出异常System.Text.RegularExpressions.Interpreter

该代码完全正确 - 它适用于 Windows。

有没有办法增加堆栈大小?还是我真的需要将较大的文件分成较小的块?

编辑:有问题的正则表达式如下所示:

导致问题的源是 300kB (~8k SLOC) 或更大。

请注意,这不是我的代码,我继承了它。

0 投票
1 回答
695 浏览

c - 获取 HP-UX 11 中当前线程的堆栈大小

我正在尝试获取在 HP-UX 11.31 上运行的应用程序中当前线程的堆栈大小。

在我使用的 Linuxpthread_getattr_np上,在 Solaris 上我可以使用thr_stksegment

请帮助我,请在 C 上找到一种了解线程堆栈大小的方法。

0 投票
1 回答
1637 浏览

javascript - 在递归循环中迭代和处理 JSON 对象导致 Stack Exceeded 错误

我正在尝试使用 JS 构建 HTML 页面。需要进入 HTML 的内容的详细信息从服务器以 json 对象的形式发送。现在,json 对象的结构基本上模仿了 dom 结构,我遍历对象并从中获取单个 html 元素数据并呈现 HTML 字符串。当我使用递归函数运行此对象时,就会出现问题。我触发了堆栈超出错误。我猜这是因为浏览器堆栈大小的限制。我想了解,在不导致脚本失败的情况下,我可以迭代此对象以创建页面的最佳方式是什么。

为了迭代这个对象,我使用了下面的技术。

希望这个问题有意义。

0 投票
1 回答
1749 浏览

microcontroller - 如何在 Microchip 的 C18 上使用更大的堆栈大小?

好的,我一直在尝试自己解决这个问题很长时间,我只是放弃了。我已经搜索了整个网络,直到我无法忍受,我需要帮助!

我阅读了整个“C18 编译器用户指南”,它说 C18 支持使用大小大于 256 字节的堆栈。但是我做了他们要求的所有事情,更改了链接器脚本并使用了多库堆栈模型编译器选项(-ls),但在堆栈的第一个库被填充后,我仍然无法访问变量。

我调试了一个简单的代码,它简单地递归调用一个函数。这个函数有 5 个浮点参数和 5 个浮点局部变量,每次调用在堆栈中使用大约 42 个字节(5*4 用于参数 + 5*4 用于局部变量 + 2 个字节用于保存旧的 SFR2 值)。第 6 次调用后,堆栈值被覆盖。

在网上搜索时,我发现很多人就如何创建和使用大数组(大于 256 字节)给出了具体说明。其中一个步骤建议使用指针来访问数组的元素。我觉得我的问题与“使用指针访问不同银行中的变量”有关,但我不知道如何将局部变量全部更改为函数调用中的指针。这没有任何意义。

老实说,恐怕我只是在做一些非常愚蠢的事情(因为我找不到人讨论这个问题)。我发现所有与增加堆栈大小相关的主题都建议使用静态变量。我以这种方式解决了我的问题,但我仍然想知道 C18 如何支持更大的堆栈大小。

下面是我用来理解这个问题的测试代码。调试时,我注意到 FSR1 寄存器已正确更新,以指向下一个存储区中的下一个地址,下一个函数参数和变量应放置在该地址中。但是当局部变量被写入时,它们会进入栈顶(只有地址的低字节被认为将数据移动到栈中,即使当 MPLABX IDE 指示给变量的地址时,在调试模式下,是正确的)。因此,我很确定问题在于编译器生成的代码没有使用 16 位地址来使用堆栈。不过,我不知道如何解决它。

任何有关此主题的讨论将不胜感激:) 谢谢!

0 投票
5 回答
5018 浏览

java - 计算方法调用堆栈大小以检查 StackOverflowException

今天早上我回答了一个与 StackoverflowException 相关的问题。该人已询问何时发生 Stackoverflow 异常

请参阅此链接在 C#、C++ 和 Java 中导致堆栈溢出的最简单方法

所以我的问题是,是否有任何方法可以在我们的程序中动态计算方法调用堆栈的大小,然后在调用方法之前应用检查,检查方法调用堆栈是否有空间来容纳它以防止 StackOverflowException。

因为我是一个 java 人,所以我在寻找 java,但也在寻找与这个概念相关的解释,不受任何编程语言的限制。

0 投票
0 回答
143 浏览

google-chrome - 超出最大调用堆栈大小错误/正确编写构造函数

首先,我将在下面发布的一些 JavaScript 代码中出现“超出最大调用堆栈大小”错误,我不确定它来自哪里。我不认为我在递归调用任何东西,而且我环顾四周找不到任何其他错误原因。我正在使用 Chrome 来执行程序,我可以从控制台中得到的唯一细节是“Vector Vector Vector Vector Vector Vector Vector...”等。我认为这意味着 Vector 函数正在递归调用自身,但是,再一次,我不知道发生在哪里。因此,首先,这是 Vector 函数:

这是完整的代码。随意完全忽略它,尽管也许有些东西对你来说是显而易见的,而这些东西对我来说是无可挑剔的。

无论如何,第二件事是关于我如何编写 Vector 构造函数的一些位,这可能会以某种方式导致我的错误。在不同的地方,我在函数的属性和方法中使用了“new Vector()”,我不知道这是否非法。我想我以前做过没有错误,但我不确定。

另外,对于“幅度”、“反向”和“单位”属性,我应该将它们改写为方法吗?我认为它们在创建时被锁定在向量的幅度/反向/单位向量中,因此如果更改顶部或左侧属性,它们将返回不正确的值。我还没有改变它们的唯一原因是它们让我印象更深的是属性而不是方法,只是在概念上。它还没有引起任何问题或任何事情;就是想。

如果你想在 JSFiddle 或其他类似的东西上这样做,我很乐意为你效劳。

0 投票
1 回答
10738 浏览

macos - 在 OS X 上使用 Clang 编译时如何增加堆栈大小?

我可以用 clang++ 指定堆栈大小吗?我找不到任何允许我这样做的编译器选项。我正在使用 OS X。

注意:这个问题专门针对 Clang,而不是 GCC 编译器。

0 投票
3 回答
2629 浏览

python - Python threading.stack_size() 没有效果

我正在尝试减少 python 脚本的堆栈大小以产生更多线程。我这样设置

并将其放在导入级别,在任何线程启动之前问题是,它没有任何效果。无论有没有它,我都可以启动确切数量的线程。我在 Windows 7 机器 x64 上使用 Python 2.7 x86,可用内存超过 2.4GB。

关于为什么它没有效果的任何想法?我真的在寻找解决方案,而不是评论我需要生成的线程数。

我怀疑它与线程相关的 .pyc 文件有关,我记得我遇到过这样的情况,删除 .pyc 文件并让 python 在下次运行时重新编译它们会应用更改,但我不知道要调整哪些文件关于线程。

将不胜感激我能得到的任何帮助。

PS 请不要推荐使用 Twisted 或 Asyncore,我知道它们更好,但我需要根据当前情况充分利用它,而不是重新设计整个代码。

0 投票
1 回答
5327 浏览

fortran - 如何将openmp线程堆栈设置为无限?

有人能告诉我如何将 OpenMP 堆栈大小设置为无限制吗?
像这个链接:为什么在这个openmp代码中发生分段错误?

我也有一个Fortran写的项目(客户的复杂代码),如果我设置OMP_STACKSIZE,项目运行正常。如果我取消设置,项目将失败。

但是,不同的输入数据有不同OMP_STACKSIZE的,所以我必须为每个输入数据尝试它,(因为我必须节省内存)。

我可以像 pthread ( ulimit -s unlimited) 一样设置 OpenMP 堆栈吗?或者有一些方法可以动态设置 omp 堆栈大小?

我正在使用 RHEL 6.1 和英特尔编译器。

非常感谢!

0 投票
1 回答
457 浏览

javascript - 错误:“未捕获 RangeError:超出最大调用堆栈大小”嵌套在 self 函数中

我不断收到错误“未捕获的 RangeError:超出最大调用堆栈大小”,我已将其缩小到以下代码: