在IBM JDK 1.5之后,采用了如下的垃圾回收GC策略:
针对吞吐量进行优化 | -Xgcpolicy:optthruput (可选) | 默认策略。对于吞吐量比短暂的 GC 停顿更重要的应用程序,通常使用这种策略。每当进行垃圾收集时,应用程序都会停顿。 |
针对停顿时间进行优化 | -Xgcpolicy:optavgpause | 通过并发地执行一部分垃圾收集,在高吞吐量和短 GC 停顿之间进行折中。应用程序停顿的时间更短。 |
分代并发 | -Xgcpolicy:gencon | 以不同方式处理短期存活的对象和长期存活的对象。采用这种策略时,具有许多短期存活对象的应用程序会表现出更短的停顿时间,同时仍然产生很好的吞吐量。 |
子池 | -Xgcpolicy:subpool | 采用与默认策略相似的算法,但是采用一种比较适合多处理器计算机的分配策略。建议对于有 16 个或更多处理器的 SMP 计算机使用这种策略。这种策略只能在 IBM pSeries® 和 zSeries® 平台上使用。需要扩展到大型计算机上的应用程序可以从这种策略中受益。 |
optthruput
表示针对吞吐量进行优化,optavgpause
表示针对停顿时间进行优化,gencon
表示分代并发,subpool
表示子池。上表中也提到,默认的GC策略为optthruput
.optthruput
来说,gencon的策略更加平衡时间和吞吐量的选择.