Java的垃圾收集器会中断一个线程吗?

时间:2010-03-10 18:29:33

标签: java garbage-collection

我的应用程序正在中断线程。它似乎发生在JVM接近堆空间不足时。我可以为JVM配置额外的堆,但我很好奇垃圾收集器是否在试图回收内存时中断线程。有人知道吗?我在RedHat ES 5.2上使用64位Java 1.6.0_16。

谢谢,

约翰

3 个答案:

答案 0 :(得分:11)

在抛出InterruptedException时中断?不,这不应该发生。它可能需要暂停线程本身,但这不是一回事。如果VM完全耗尽内存,则应该抛出OutOfMemoryError而不是......

答案 1 :(得分:2)

除非发生OutOfMemory,否则如果发生垃圾收集,则不会中断线程。他们可能会等待一段时间。

答案 2 :(得分:0)

您可能正在接收所谓的spurious interrupts。它们可能在任何时候发生,但低内存/高负载情况可能使它们更有可能发生。但是,这将取决于JVM实现细节,它不是一个规则,与垃圾收集的相关性(如果确实存在)是偶然的,而不是设计。