是否始终调用gc,即使在运行时连续可用堆空间?

时间:2015-12-31 20:27:58

标签: java garbage-collection

根据 Java平台标准版HotSpot虚拟机垃圾收集调整指南部分标题为"Generations"

  

当年轻一代填满时,它会导致一个小集合,其中只收集年轻一代

  

最终,终生代将填满并且必须被收集,从而产生一个主要集合,其中收集整个堆。

因此,如果应用程序已完成分配阶段,那么 在整个应用程序的执行过程中,年轻和终身的世代永远不会被填满(在任何阶段),那么gc甚至不会发生一次?

如果会发生,原因是什么?因为这似乎与链接文档相反。

1 个答案:

答案 0 :(得分:6)

  

因此,如果应用程序完成了分配阶段,并且在整个应用程序的执行过程中,年轻和终身代都没有填满(根本就没有,在任何阶段),gc甚至不会发生一次?

是。如果年轻和终身世代没有填补(在任何阶段),那么gc 可能不会发生(甚至一次)。由JVM运行时来管理内存,包括决定何时(或如果)垃圾收集发生。