首页 文章

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

提问于
浏览
0

在C中,我可以通过以下小程序消耗堆栈内存区域(我的Mac中的堆栈大小限制为8MB)

int main(int argc, const char **argv) {
  int a[1024*1024*2];
  long size = sizeof(a);
  return 0;
}

由于数组java也是一个对象,因此它的元素存储在堆中 . 根据Oracle's doc,Mac中的默认线程堆栈大小为512KB . 有没有程序可以耗尽堆栈大小?

1 回答

  • 1

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

    现在Java只在栈上存储原语 .

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

相关问题