【发布时间】:2013-03-11 19:39:58
【问题描述】:
我的意思是当程序无限递归并且计算机内存不足时,java编译器会抛出堆栈溢出错误或内存不足错误吗?
我很确定它已经失忆了,但是这是一个漫长的夜晚,几乎没有睡眠,有人可以为我澄清一下吗?
【问题讨论】:
-
我认为这取决于你想在哪里分配内存,在堆栈上(这意味着局部变量)(或)在堆上?如果由于递归或其他原因导致堆栈满,则为 StackOverflow,否则为 OutOfMemory。
-
测试似乎相当简单。通过将 JVM 内存设置为一个较小的值,您可以在不破坏开发操作系统的情况下进行测试。
-
为什么不用无限递归函数调用自己测试一下呢?
-
Java 编译器不会抛出任何
Exception。这将在运行时发生。