为什么G1提供更好的暂停时间但吞吐量更低?

时间:2016-09-25 14:05:24

标签: java garbage-collection g1gc

为什么G1提供较少的暂停时间但吞吐量较低(吞吐量较低意味着GC将以秒为单位运行更多的总时间)

根据我的理解,因为内存被分成更小的部分,现在必须在比完整堆更小的部分上运行。实际上我们可以说现在没有完整的GC,因为它没有在完整堆上运行,而是有多个后台线程同时运行并清除那些包含最大死对象数的内存块。所以暂停时间很短。

吞吐量很低,因为较大的内存被划分为较小的块,因为多个GC线程必须在较小的块而不是单个块上运行。所以大多数时候都会很忙碌

这是对的吗?

为什么G1对于大于4GB的堆更好?我认为它对所有堆大小都应该更好,因为它会分成更小的阻塞,暂停时间会很慢。那么为什么G1建议堆大于4 GB?

1 个答案:

答案 0 :(得分:0)

G1使用并发标记活动对象但停止世界清理死对象。因此,暂停时间比停止世界GC(例如并行清除)更短,但是更长的时间来执行GC,因为执行并发标记活动对象的资源更少,并且需要额外的时间来标记活动对象(对象在并行标记阶段)。