导图社区 垃圾收集器思维导图
以下介绍了当前主流以及历史中的垃圾收集器,CMS收集器、G1收集器、ZGC收集器、Serial、Serial Old、Parallel、Parallel Old、ParNew,赶快收藏下图学习吧!
北师大 357 普通心理学,心理现象是一种主观精神现象,看不见,摸不着。心理现象支配着行为,又通过行为表现出来。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
垃圾收集算法
CMS收集器
Concurrent Mark Sweep
获取最短停顿时间为目标的垃圾收集器
收集算法: 标记清除算法
工作步骤
初始标记
STW, 速度较快
并发标记
和用户线程一起运行, 时间较长
重新标记
STW, 比初始标记时间较长,
使用三色标记法的增量更新算法
并发清理
对于没有标记的对象作清除, 新加入的对象会被标记为黑色
并发重置
重置本次GC过程中的标记数据
优点
并发收集
低停顿
缺点
对CPU资源敏感, 在没有STW的过程中, 会和服务抢资源
存在浮动垃圾
使用标记清除算法, 会产生大量的空间碎片
执行过程存在不确定性, 在垃圾收集没有执行完的过程中, 如果再次触发 full gc, 则会导致并发失败, STW, 并使用 Serial Old 来进行垃圾收集
G1 收集器
Grabage first
面向服务器的垃圾收集器, 针对配备多颗处理器及大容量内存的机器
将堆划分为多个大小相等的独立区域 Region
一般将堆平均划分为 2048 份
依然分代的概念, 同一个 Region 在不同的时刻, 可能属于不同的分代
将大对象放入独立的Humongous
一般认为一个对象超过 Region 的 50%就认为它是大对象, 如果大小超过Region, 就用连续的 Humongous Region 来存放
Full Gc 也会收集此区域的对象
STW, 速度快
同 CMS
最终标记
筛选回收
对各个 Region 的回收价值和成本进行排序, 根据用户期望的 GC 停顿时间来制定回收计划
STW
特点
并行与并发
分代收集
空间整合
可预测的停顿
收集分类
YoungGc
并不是 Eden 区满了就会触发 YoungGC, 先计算回收 Eden 区需要多久的时间, 如果时间远小于期望停顿时间, 增加年轻代的 Region
MixedGC
老年代的堆占有率达到设定值后触发, 回收所有的 young 和部分 Old 以及大对象区
如果发现没有足够的空 Region 时来承载拷贝对象时会触发一次 FullGC
ZGC 收集器
目标
支持 TB 量级的堆
最大 GC 停顿时间不超过 10ms
奠定未来 GC 特性的基础
最糟糕的情况下, 吞吐量降低 15%
不分代
由于实现复杂, 目前先实现一个单代版本未来可能会实现分代版本
基于 Region 的内存布局
ParNew
跟Parallel 收集器类似
能够与CMS配合
Parallel Old
Serial Old 的多线程版本
默认线程数为CPU 核心数
适用于老年代
搭配新生代算法
Parallel
收集算法: 标记整理算法
Serial 的多线程版本
适用于新生代
搭配老年代算法
Serial Old
收集算法: 复制算法
单线程 STW
搭配的新生代算法
Serial
CMS 并发失败的替代收集器
单线程, STW
CMS