collectionSetChooser.cpp
G1垃圾回收器,把内存分成了一个个HeapRegion,所以这里按照每个HeapRegion的垃圾回收效率gc_efficiency进行排序
1.首先去掉不适用的portion
2.检查regions不为空
3.打印G1 堆region存活信息
4.循环每个HeapRegion,然后调用do_heap_region
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
增加一个堆区 HeapRegion
1.先判断该heapRegion是否为固定的,固定则不增加到垃圾收集集合collection set
2.校验heapRegion的类型应该是old类型
3.校验heapRegion的remember_set,必须是完成的
4.把hr加到regions列表
5.调用calc_gc_efficiency 计算该heapRegion的垃圾回收效率
计算gc效率的函数在heapRegion.cpp
1.获取g1_policy,也就是对应的g1 垃圾回收策略
2.然后根据g1策略,预测计算 young gc的回收时间
3.然后用回收的字节数 / 预测的回收时间 = gc_efficiency, 这个值越大,回收效率越高