单独的Java线程中的OutOfMemoryError

时间:2009-10-08 10:48:41

标签: java multithreading memory-management out-of-memory

考虑我有一个主线程,它在新线程中执行一个新的Runnable。现在,在执行新线程时,Java VM会耗尽内存并抛出OutOfMemoryError。

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

1 个答案:

答案 0 :(得分:7)

其中一个主题将在OutOfMemoryError的分配部分中抛出new。为避免颠簸,抛出错误后可能会有大量内存空闲。所以其他线程可以继续,并且在一段时间内不太可能是OOME。

如果未捕获OOME,则线程将退出并调用未捕获的异常处理程序。在退出时,线程和相关对象将像往常一样用于垃圾收集(不得通过其他方式引用)。