Serial Collector
一样。
concurrent mark-sweep(CMS) collector
,通常也被称为低延时收集器low-latency collector
.
> 适用场景: 仅适用于老年代,新生代处理方式和Parallel Collector相同。
G1目标
G1 is planned as the long term replacement for the Concurrent Mark-Sweep Collector. 计划将G1作为CMS收集器的长久替代物。
它是为了平衡 延时和吞吐量之间的一种最优关系。
G1实现原理
基本属性
和CMS的相同点>=1/2
个区域空间的对象.超大对象有时候会被以下特殊方式处理: 老年代空间 *占用*
达到某个阈值,即Heap初始化占用阈值。此时,G1将调度Initial Mark的Young-only收集(蓝色大球),而非常规的Young-only(蓝色小球)收集。
Stop-The-World
停顿,Remark
和CleanUp
.Initial Mark
标记过程中,因为它是并发执行,有可能会发生Young-only
收集,造成标记数据有误差,因此需要重新标记一次,该过程为串行执行,会造成Stop-The-World
.
在Remark 和Cleanup之间,G1将并发地计算出一份对象存活性总结报告,它将在Cleanup停顿阶段更新内部的数据结构
Space-reclamation
阶段是否需要继续跟踪,如果继续跟随的话,Young-only阶段的完成仅仅做Young-only
收集动作。Stop-The-World
的全堆压缩(Full GC)。
如下图所示:
2种过程是循环往复收集。 G1指令细节 初始空间占用 Initiating Heap Occupancy Percent(IHOP): Initial Mark 收集触发的阈值,为老年代空间定义Heap占用的百分比。 JVM 设置参数:-XX:InitiatingHeapOccupancyPercent 默认情况下,根据标记时间以及老年代在标记周期中的内存分配,G1垃圾收集器将自动抉择理想的IHOP的值。 JVM 失效参数:-XX:-G1UseAdaptiveIHOP 修改区域空间大小 -XX:G1HeapRegionSize
G1 Vs. 传统垃圾回收器
Young-only
和Space-reclamation