JVM垃圾收集器-简单总结

新生代收生器

Serial、ParNew、Parallel、Scavenge

老年代收集器

CMS、Serial Old、Parallel Old

整堆收集器

G1

1.Serial收集器

Serial收集器是最基本的,发展历史最悠久的收集器。

特点:单线程 、简单高效(垃圾回收时会暂停其他所有工作)
应用场景: Client模式下的虚拟机

2.ParNew收集器

ParNew收集器其实就是Serial收集器的多线程版本。
特点:多线桯,默认开启的线程数和 CPU的数量相同(也会出现停顿)。
应用场景: Server模式中首选的新生代收集器.

3.Parallel Scavenge收集器

与吞吐量关系密切,故也称为吞吐量优先收集器。
特点: 属于新生代收集器也是采用复制算法的收集器,又是并行的多线程收集器 (与ParNew收集器类似)。
可控制吞吐量,有GC的自适应调节策略(收集性能检测信息,动态设置一些参数提供最优的停顿时间和最高的吞吐量)

4.Serial Old收集器

Serial Old是Serial收集器的老年代版本。
特点: 单线程,标记-整理算法。
应用场景: Client模式下的虚拟机,Server模式中也有使用。

5.Parallel Old收集器

Parallel Scavenge收集器的老年代版本。
特点: 多线程,标记-整理算法。
应用场景: 注重高吞吐量以及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge+Parallel Old 收集器。

6.CMS收集器

一种以获取最短回收停顿时间为目标的收集器
特点: 标记-清除算法。并发收集、低停顿。
应用场景: web程序、b/s服务。

CMS收集器的运行4步骤:
初始标记:标记GC Roots 直接关联到的对象(不会递归的追踪下去),速度快但还是有停顿。
并发标记:在GC Roots Tracing过程中进行并发标记。
重新标记:修正并发标记期间用户继续运行导致没有标记的对象。
并发清除:对标记的对象进行清除回收。

缺点: 对CUP敏感,无法处理浮动垃圾,会产生攻坚碎片。

7.G1收集器

面向服务器的垃圾收集器
特点: 引入了分区的思路,弱化了分代的概念能合理的利用周边的资源

回收流程:
初始标记:标记GC Roots 直接关联到的对象(不会递归的追踪下去),速度快但还是有停顿。
并发标记:在GC Roots Tracing过程中进行并发标记。
最终标记:修正在并发标记阶段发生变化的对象。
筛选回收:对Regin的回收成本和回收价值进行排序,根据用户期望来回收一部分的Region。

查看jvm对应的收集器,以及各个版本对应的收集器名称可以查看这篇博客
https://blog.csdn.net/youanyyou/article/details/106464291

查看自己的java使用了什么收集器

使用命令查看:

java -XX:+PrintCommandLineFlags -version

图中红框的位置就能看到对应的参数
在这里插入图片描述参数和垃圾收集器对应关系

参数回收器
-XX:-UseSerialGCSerial + Serial Old
-XX:-UseParNewGCParNew + Serial Old
-XX:-UseParallelGCParallel Scavenge + Serial Old
-XX:-UseParallelOldGCParallel Scavenge + Parallel Old
-XX:-UseConcMarkSweepGCCMS + ParNew
-XX:-UseG1GCG1
-XX:+UseParallelGC对应的收集器问题:

对于UseParallelGC对应的收集器有两种说法:
1.Parallel Scavenge + Serial Old
2.Parallel Scavenge + Parallel Old
实际上造成有两种情况的原因是这样的,《深入理解 Java 虚拟机》第三版第 128 页中提到 JDK 9 之前,Server 默认使用 Parallel Scavenge + Serial Old 之后就是使用Parallel的。
有些网友发现在JDK9之前也有使用Parallel,准确的说 JDK 7u4 以后的 7 和 JDK 8 老年代默认使用的都是 Parallel 收集器,只是书中没有更新这个细节。
具体可以参考下面这篇博客

https://blog.csdn.net/youanyyou/article/details/106464291

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值