Java - 垃圾回收器介绍

2021-02-27  本文已影响0人  夹胡碰

概述

详情

垃圾回收器 JDK版本 回收区域 线程模型 回收算法 特点 对比
Serial 1.3 新生代 单线程 标记-复制
ParNew 新生代 多线程 标记-复制 关注暂停时间
Parallel Scavenge 1.4 新生代 多线程 标记-复制 关注吞吐量 可以设置
-XX:MaxGCPauseMillis
-XX:GCTimeRatio
比ParNew多了个调节策略
-XX:+UseAdaptiveSizePolicy
Serial Old 老年代 单线程 标记-整理 CMS Concurrent Mode Failure
失败时的后备预案
Parallel Old 1.6 老年代 多线程 标记-整理 吞吐量优先
CMS(Concurrent Mark Sweep) 1.5 老年代 多线程 标记-清除 关注停顿时间
回收过程:
1. 初始标记 - Stop The World
2. 并发标记
3. 重新标记 - Stop The World
4. 并发清除
会产生浮动垃圾
G1 1.6开始
9正式
新生代+老年代 多线程 整体是标记-整理
局部是标记-复制
把内存区域分成多个Region
优先回收价值收益最大的
区域划分:Region、Humongous
回收过程:
1. 初始标记 - Stop The World
2. 并发标记
3. 最终标记 - Stop The World
4. 筛选回收 - Stop The World
在延迟可控的情况下,获得尽可能高的吞吐量
优点: 与CMS相比不易产生碎片
缺点: 额外负载比CMS高 设计复杂
内存8G以下用CMS 以上用G1

其他垃圾回收器

Shenandoah 低延迟垃圾回收器 标记回收过程更复杂
ZGC Region大小细化

上一篇 下一篇

猜你喜欢

热点阅读