G1可以设置一个垃圾回收的预期停顿时间,制定一个目标,规定在一个时间内,垃圾回收引起的停顿时间不能超过多久,之后就由G1来全权负责,保证达到该目标。想想之前的几款垃圾回收器,费尽心思的优化参数,最终其实还是为了减少STW的时间,提高吞吐量,而G1直接就做到由开发者来指定STW时间,相比起其他垃圾回收器,无疑显得更智能和友好。
而G1能够做到控制垃圾回收停顿时间的关键在于,它要追踪每个Region的回收价值,它要清楚每个Region里有多少对象是垃圾,如果对这个Region做回收,会消耗多少时间,尽量在有限的时间内回收更多的垃圾对象,把垃圾回收造成的STW时间控制在开发指定的时间范围内。
简而言之,G1会根据开发设定的预期系统停顿时间,来选择最少回收时间和最多垃圾对象的Region进行回收,效率和成果最大化,保证GC时的停顿时间在可控范围内。
578





