【问题标题】:Difference between StackOverFlow and OutOfMemory ? [closed]堆栈溢出和内存不足之间的区别? [关闭]
【发布时间】:2013-03-11 19:39:58
【问题描述】:

我的意思是当程序无限递归并且计算机内存不足时,java编译器会抛出堆栈溢出错误或内存不足错误吗?

我很确定它已经失忆了,但是这是一个漫长的夜晚,几乎没有睡眠,有人可以为我澄清一下吗?

【问题讨论】:

  • 我认为这取决于你想在哪里分配内存,在堆栈上(这意味着局部变量)(或)在堆上?如果由于递归或其他原因导致堆栈满,则为 StackOverflow,否则为 OutOfMemory。
  • 测试似乎相当简单。通过将 JVM 内存设置为一个较小的值,您可以在不破坏开发操作系统的情况下进行测试。
  • 为什么不用无限递归函数调用自己测试一下呢?
  • Java 编译器不会抛出任何Exception。这将在运行时发生。

标签: java exception recursion


【解决方案1】:

通常会出现堆栈溢出异常。

也就是说,它可以是任何一种,这取决于首先耗尽的是堆栈内存还是堆内存。这又取决于每个递归调用需要多少堆栈/堆内存,以及有多少可用(堆大小和堆栈大小可以相互独立配置)。

猜你喜欢
  • 2011-03-29
  • 2010-11-10
  • 1970-01-01
  • 2011-06-13
  • 2014-01-09
  • 2013-06-28
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
相关资源
最近更新 更多