各种垃圾收集器的特点及使用场景
所属分类 java
浏览量 1399
jvm hotspot 7种
serial ,ParNew,Parallel Scavenge,serial old,Parallel Old,CMS收集器,G1
连线的收集器可搭配使用
serial 新生代 单线程 Client模式下默认新生代收集器
ParNew Serial多线程版本
Parallel Scavenge 新生代 可控制的吞吐量(Throughput) 适合在后台运算而不需要太多交互的任务
吞吐量=运行用户代码时间 /(运行用户代码时间+垃圾收集时间)
控制参数
-XX:MaxGCPauseMillis -XX:GCTimeRatio
打开 -XX:+UseAdaptiveSizePolicy
不需要手工设置 新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等参数
自适应调节策略是Parallel Scavenge与ParNew的一个重要区别!!!
Serial Old serial的老年代版本 使用标记整理算法
作为CMS的后备预案,发生Concurrent Mode Failure时使用 !!!
Parallel Old Parallel Scavenge的老年代版本 使用多线程和标记-整理算法
CMS(Concurrent Mark Sweep) 控制停顿时间为主要目标 适用于网站应用 使用标记-清除算法
主要分四个步骤 初始标记 并发标记 重新标记 并发清除
初始标记 重新标记 需要 STW Stop The World
CMS主要优点:并发收集,低停顿。
主要缺点
耗 cpu
无法处理浮动垃圾,可能出现 Concurrent Mode Failure 导致另一次Full GC产生 CMSInitiatingOccupancyFraction参数调整
基于 标记-清除 算法 内存碎片
-XX:+UseCMSCompactAtFullCollection (默认开启,停顿变长)
-XX:CMSFullGCsBeforeCompaction
设置执行多少次不压缩的Full GC后,跟着来一次带压缩的(默认值为0,每次Full GC时都进行碎片整理)
G1 Garbage-First
优点 并行与并发 分代分区收集 空间整理 可预测的停顿
将堆划分成多个大小相等的独立区域(Region) 避免全堆扫描
优先回收价值最大的Region Garbage-First
使用Region划分内存空间以及有优先级的区域回收方式,保证了G1在有限的时间内的GC效率
GC根节点中加入Remembered Set 避免全堆扫描
除去维护Remembered Set的操作,G1运行步骤
初始标记
并发标记
最终标记
筛选回收
上一篇
下一篇
延迟队列原理及使用场景
JVM CMS 常用参数
JVM CMS 介绍
顶尖学霸是如何炼成的
程序员段子合集
理性客观看待区块链的应用前景