如何排出java线程堆栈内存区域?

时间:2013-12-04 04:54:17

标签: java c memory-management operating-system jvm

在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。是否有任何程序可以耗尽堆栈大小?

1 个答案:

答案 0 :(得分:1)

堆栈值仅存在于它们创建的函数范围内。一旦返回,它们就会被丢弃。

现在Java只在堆栈中存储基元。

所以他们只能排出堆栈就是创建基元。在这是recursive method然后我想你可以在StackOverflowError之前观察到一些消耗。