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

c - 如何在不增加堆栈大小的情况下分解 C 函数

在从事嵌入式系统设计工作时,我经常遇到遗留代码,其中有人编写了一些 ISR,其中包含一个巨大的 if/else-Jungle,有时跨越多个屏幕长度。现在,为了成为一名优秀的程序员,我尝试重构函数,使用我学到的范例,其中之一是:“一个函数应该只做一件事”。

所以我将函数分解为多个静态子函数,它们具有描述性名称并封装变量。但是由于我正在使用嵌入式设备,因此我需要考虑堆栈大小和跳转次数(尤其是在可能经常调用并且本身可能被其他东西打断的 ISR 中)。

现在,大多数(甚至所有)编译器都可以强制内联函数(就像 __always_inline 对 gcc 所做的那样)。但即使这样也会增加堆栈大小,如果我必须传递参数(它们不一定会被优化掉),即使每个参数只有几个字节。

现在我的实际问题是:有没有办法在分解 C 中的函数时不增加堆栈大小?

编辑: 为了让我的问题更清楚:这是一些代码的示例,我只是将一些代码转换为内联函数。

静态堆栈使用量为 144(没有内联函数)和 160 个内联函数。

原来的:

使用内联函数:

0 投票
3 回答
478 浏览

angular - Maximum call stack size exceeded when adding PWA in Angular

I am trying to install service worker in my application but it showing following error after executing following command.

ng add @angular/pwa --project ServiceWorkerdemo

it showing Maximum call stack size exceeded error message.

Even though I clear cache still it showing same error again.

enter image description here

Instead of marking as duplicate kindly suggest me an answer, I have already tried clear cache option but still showing an error message. You can see in Image also.

After deleting node Package. enter image description here

Thanks in advance.

0 投票
1 回答
1270 浏览

fortran - (ulimit -s unlimited) 和 (export KMP_STACKSIZE = xx) 有什么区别?

我像下面一样运行我的程序,并使用(ulimit -s unlimited)。有用。

我不喜欢使用!$OMP SECTION,它只使用 2 个线程来限制速度。

所以我改变了我的代码,如下所示。

当我启动此代码时,出现分段错误。

我认为这与内存大小有关。所以,经过搜索,我找到了这个解决方案

现在我使用 2 个不同的命令

它运作良好,但我不知道这两个命令之间的区别。有什么不同?

0 投票
0 回答
628 浏览

c++ - boost协程的堆栈大小是多少?

boost::coroutine2 需要的最佳堆栈大小是多少?我们是否需要将其与线程堆栈大小相匹配?(https://www.boost.org/doc/libs/1_68_0/libs/context/doc/html/context/stack.html

0 投票
1 回答
933 浏览

gcc - 如何知道.exe程序的堆栈大小限制?

g++由于堆栈内存不足,我的程序(使用 mingw 构建)似乎崩溃了。我使用编译选项-Wl,--stack,64000000来增加堆栈限制,但问题仍然存在。我想知道是否有实用程序或方法来检查我的.exe程序的当前堆栈限制,以便我可以验证限制确实更改为该值。

0 投票
1 回答
244 浏览

c# - BackgroundWorker DoWork 线程的堆栈大小是多少?有没有办法改变它?

我知道 C# 主程序的堆栈大小为 1 MB(32 位和任何)或 4 MB(64 位),请参阅为什么 C# 中的堆栈大小恰好为 1 MB?

BackgroundWorker DoWork线程的默认堆栈大小是多少?

除了创建另一个线程之外,有没有办法改变线程的堆栈大小,BackgroundWorker DoWork如下例所示:

我使用 a 是BackgroundWorker因为我有一个Windows Forms应用程序,我在DoWork事件中进行一些计算。我这样做是因为我想向 GUI 的状态行报告,并且我希望用户可以取消计算。

我收到堆栈溢出错误,因为我正在调用高度递归的英特尔 MKLs LAPACKE_dtrtri,请参阅 http://www.netlib.org/lapack/explore-html/df/d5c/lapacke__dtrtri_8c_source.html

以下代码显示了我如何调用英特尔 MKL:

在我的事件InvTriangularMatrix中调用。DoWork当我没有设置堆栈大小时,LAPACKE_dtrtri函数内部出现堆栈溢出错误。

矩阵的大小可以在 1000 x 1000 到 100000 x 100000 之间。如果矩阵大于 65535 x 65535,请参阅2d-Array with more than 65535^2 elements --> Array dimensions exceeded supported range

0 投票
3 回答
458 浏览

matlab - MATLAB 的堆栈大小是多少?

MATLAB R2018a(64 位)的默认堆栈大小是多少?

似乎堆栈大小大于 64 位 C# 程序。

为什么我这么问

我问这个问题是因为我正在调用英特尔 MKLs LAPACKE_dtrtri,它是高度递归的。

我在 .NET 应用程序中使用该函数,从 C# 调用它时出现堆栈溢出错误,请参阅BackgroundWorker DoWork 线程的堆栈大小是多少?有没有办法改变它?

另一方面,如果我从 MATLAB 调用我的 .NET 应用程序,我不会收到堆栈溢出错误。这就是我想知道 MATLAB 的堆栈大小的原因。

0 投票
1 回答
719 浏览

c# - 增加主程序的堆栈大小或为递归代码块创建一个具有更大堆栈大小的新线程?

我有一个 关于 BackgroundWorker DoWork 线程的堆栈大小是多少的后续问题?有没有办法改变它?

我是否应该使用以下构建后事件来增加主程序的堆栈大小:

还是应该将我的递归代码块封装在具有更大堆栈大小的新线程中?

有很多递归的代码来自英特尔 MKLs我调用的LAPACKE_dtrtriDLLImport函数。所以我无法更改此代码。我可以更改堆栈大小以避免堆栈溢出错误。

  • 为我的主程序分配更大的堆栈大小有什么缺点?

  • 为这个计算创建一个具有更大堆栈大小的新线程有什么缺点?

  • 哪种解决方案更好?

  • 合理的堆栈大小是多少?8 MB、16 MB、32 MB 或 64 MB(如MATLAB)?该程序在具有至少 16 GB RAM(最高 256 GB)的计算机上运行。

注意:对于我的应用程序的 99%,默认堆栈大小为 4 MB(64 位)就足够了,但另外 1% 使用的是高度递归的外部代码。

0 投票
1 回答
799 浏览

javascript - 错误 RangeError:使用 setTimeout 时超出了最大调用堆栈大小

我正在尝试实现一种方法,其中在固定时间间隔后发生角度材料选项卡更改。我尝试在 JavaScript 中使用 setInterval,但它工作起来不是很可靠(选项卡更改是随机发生的)。下面发布的代码有效,但几个小时后浏览器冻结并且控制台显示此错误:

错误 RangeError:超出最大调用堆栈大小

我尝试在 setTimeout 方法中传递 transitionSpeed ,如下所示:

但如果该方法被第二次调用,this.transitionSpeed 为空。

非常感谢任何帮助

编辑:

将代码更改为此,但几个小时后仍然出现相同的错误:

EDIT2: 在更改 Tab 时调用 TabChange 事件。代码:

这是唯一的方法,在超时旁边调用。根据这篇文章,必须有一直被调用的递归方法。

0 投票
0 回答
42 浏览

ios - 在 iOS 测试包中增加 stack_size

我正在尝试使用 XCTest 运行单元测试,我需要将 stack_size 增加到 2MB。链接可执行文件时,使用 -Wl,-stack_size 选项,我可以更改它。第一个问题,我不确定此选项是否适用于所有线程,还是仅适用于主线程?

问题是,如果我尝试将此设置应用于测试项目,则会出现链接错误,指出此选项仅适用于可执行文件。

有没有办法做到这一点?如果没有,我将不得不使用 NSThread 并增加 stack_size?但我不确定如何创建一个运行所有测试的线程?

谢谢你的帮助。