Java 垃圾回收之老年代垃圾回收器

Posted work hard work smart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 垃圾回收之老年代垃圾回收器相关的知识,希望对你有一定的参考价值。

Serval Old收集器(-XX:+UseSerialOldGC, 标记-整理算法)

单线程收集,进行垃圾收集时,必须暂停所有工作线程

简单高效,Client模式下默认的老年代收集器

 

 

 

Parallel Old收集器(-XX:+UseParallelOldGC, 标记-整理算法)JDK 6后提供

多线程,吞吐量优先

 

 

 

CMS收集器(-XX:+UseConcMarkSweepGC,  标记-清除算法)

分为以下阶段

初始标记:stop-the-world

并发标记: 并发追溯标记,程序不会停顿

并发预清理: 查找执行并发标记阶段从年轻代晋升到老年代的对象

重新标记: 暂停虚拟机,扫码CMS堆中的剩余对象

并发清理: 清理垃圾对象,程序不会停顿

并发重置:重置CMS收集器的数据结构

这六个步骤中,初始标记和重新标记,会有短暂的stop-the-world

 

 

 

G1收集器(-XX:+UseG1GC, 复制+标记-整理算法)(年轻代和老年代都能用)

Garbage First 收集器的特点

并发和并行

分代收集

空间整合

可预测的停顿

 

将整个Java堆内存划分为多个大小相等的Region

年轻代和老年代不再物理隔离

 

以上是关于Java 垃圾回收之老年代垃圾回收器的主要内容,如果未能解决你的问题,请参考以下文章

java什么时候进行垃圾回收,垃圾回收的执行流程

JVM之G1垃圾回收器

JAVA垃圾回收期 老年代和新生代是啥意思

[Java] JVM垃圾回收器的前世今生

CMS垃圾回收器

JVM学习--垃圾回收器