6

考虑到我有一个主线程,它在一个新线程中执行一个新的 Runnable。现在,当新线程正在执行时,Java VM 内存不足并抛出 OutOfMemoryError。

发生什么了?目标线程是否停止?主线会继续吗?当新的 Thread 崩溃时,VM 会从中回收内存并让执行继续吗?

4

1 回答 1

8

其中一个线程将OutOfMemoryError在 a 的分配部分期间抛出new。为避免抖动,在引发错误后可能会有大量可用内存。所以其他线程可以继续进行,并且在一段时间内不太可能OOME。

如果未捕获 OOME,则线程将退出并调用未捕获的异常处理程序。退出时,线程和关联的对象将照常用于垃圾收集(除非被其他方式引用)。

于 2009-10-08T10:55:11.837 回答