在C中,我可以通过以下小程序消耗堆栈内存区域(我的Mac中的堆栈大小限制为8MB)
int main(int argc, const char **argv) { int a[1024*1024*2]; long size = sizeof(a); return 0; }
由于数组java也是一个对象,因此它的元素存储在堆中。根据{{3}},Mac中的默认线程堆栈大小为512KB。是否有任何程序可以耗尽堆栈大小?
答案 0 :(得分:1)
堆栈值仅存在于它们创建的函数范围内。一旦返回,它们就会被丢弃。
现在Java只在堆栈中存储基元。
所以他们只能排出堆栈就是创建基元。在这是recursive method
然后我想你可以在StackOverflowError之前观察到一些消耗。