143得票2回答
为什么C#中的堆栈大小恰好为1 MB?

今天的个人电脑虽然有大量的物理内存,但是C#的堆栈大小在32位进程中只有1 MB,在64位进程中为4 MB (C#中的堆栈容量)。 为什么CLR中的堆栈大小还是如此有限呢? 而且为什么正好是1 MB (4 MB)(而不是2 MB或512 KB)? 为什么决定使用这些数量? 我对这个决定背...

32得票4回答
为什么我能达到的最大递归深度是不确定的?

我决定尝试一些实验,以探索堆栈帧的大小和当前执行代码通过堆栈的深度。这里有两个我们可以调查的有趣问题: 当前代码嵌套了多少层? 当前方法可以递归几层,在遇到StackOverflowError之前? 当前执行代码的堆栈深度 以下是我能想到的最好解答:public static int...

20得票1回答
如何在使用Clang编译时增加OS X的堆栈大小?

我可以在使用clang++时指定堆栈大小吗?我找不到任何编译器选项可以让我这样做。我正在使用OS X。 注意:此问题特指Clang编译器,而非GCC编译器。

13得票2回答
Ruby的Fiber 4kB堆栈大小的后果

对我来说,纤程是一个相对较新的概念。我知道每个纤程的堆栈大小限制为4kB,我不断地看到“应该小心”这样的提示。这个限制的真实后果是什么? 编辑: 看起来这个4kB的限制并没有那么严重,只有在纤程本身有大量局部变量(4,045个)时才会引发SystemStackError。count = 0...

13得票2回答
当使用大的预编译头文件时,cc1plus.exe崩溃

我在使用MinGW时遇到了一个问题,无法使用预编译头文件。编译器似乎能够找到预编译头文件,但是 cc1plus.exe 在之后立即崩溃(cc1plus.exe 已停止工作)。 我理解这可能与 cc1plus.exe 的堆栈大小较低有关,因此我做了以下操作以增加它:editbin cc1plu...

13得票4回答
Java中是否可以在线程运行一段时间后获取实际使用的堆栈大小?

这个想法是帮助确定给定Java应用程序的最佳堆栈大小。 可以使用这些信息中的一个来创建堆栈大小范围表,线程在退出时可以修改该表单,可以定期转储以及在应用程序退出时进行转储。 编辑:这是在客户机上运行实际工作负载的情况下,我无法获得分析器访问权限。 编辑2:回答中的一个问题,每个线程大约需...

11得票4回答
计算方法调用堆栈大小以检查StackOverflowException

今天早上,我回答了一个与 StackOverflowException 相关的问题。这个人问了什么情况下会发生 StackOverflow 异常。 请查看此链接:在 C#、C ++ 和 Java 中导致堆栈溢出的最简单方法 那么我的问题是,是否有一种方法可以在我们的程序中动态计算方法调用堆...

11得票2回答
与某些输入大小成线性比例的堆栈深度是否可行?

在使用Java(或其他任何过程式编程语言)编程时,我经常要选择递归解决问题和迭代解决问题。递归选项通常比迭代解决方案更优雅,所以我通常会选择递归解决方案。但是有一个例外: 担心堆栈溢出 如果最大堆栈深度与输入大小成线性关系(甚至更糟),我倾向于避免使用递归解决方案。然而,我意识到在许多其他语...

10得票2回答
Windows (Visual C++)中的线程堆栈大小

有没有调用可以确定正在运行的线程的堆栈大小?我已经在MSDN线程函数文档中寻找,但似乎找不到。

8得票4回答
在Linux中,堆栈内存是物理上连续的吗?

据我所知,栈内存在虚拟内存地址中是连续的,但物理上的栈内存也是连续的吗?这是否与栈大小限制有关? 编辑:我曾经认为栈内存不必在物理上是连续的,但我们为什么认为栈内存总是比堆内存快呢?如果它在物理上不是连续的,那么栈如何更好地利用缓存?还有一件事情总是让我感到困惑,CPU在数据段中执行指令,而...