美文网首页
深入理解java虚拟机读书笔记-垃圾收集器

深入理解java虚拟机读书笔记-垃圾收集器

作者: 漫游鹰 | 来源:发表于2017-07-31 10:16 被阅读0次

GC收集器搭配图:

图1 gc收集器搭配

1.serial收集器:单线程收集器,运行时stw,client模式下默认新生代收集器(简单而高效,桌面应用场景下,jvm管理的内存一般不大,stw时间一般可控制在100ms内);

gc算法:新生代使用复制算法,老年代使用标记-整理算法

2.ParNew收集器:Serial的多线程版本。server模式下的首选新生代收集器,因为除了Serial外,只有它能和CMS配合工作;

3.Parallel Scavenge收集器:新生代收集器,多线程+复制算法,目的是达到一个可控制的吞吐量:  (运行用户代码时间/(运行用户代码时间+gc时间));

4.Serial Old收集器:serial收集器的老年代版本,单线程,标记-整理算法;

5.Parallel Old收集器:Parallel Scavenge收集器的老年代版本,多线程+标记-整理算法。适合注重吞吐量和cpu敏感的场景;

6.CMS收集器:基于标记-清除算法,目标是获取最短stw时间

步骤:

初始标记(stw):标记gc root能直接关联的对象

并发标记:gc root tracing,可以和用户线程并发执行

重新标记(stw):修正并发标记期间,标记变动的对象的标记记录

并发清除:可以和用户线程并发执行

优点:并发收集,低停顿

缺点:1.对cpu资源敏感;2.无法处理浮动垃圾;3.产生内存碎片;

7.G1收集器:整体基于标记-整理算法,局部基于复制算法

特点:1.并行与并发,使用多个cpu来减少stw;2.分代收集;3.空间整合,不会产生内存碎片;4.stw可预测

g1将java堆划分为多个大小相等的独立区域(Region),跟踪各个region里面垃圾堆积的价值大小,维护一个优先列表(回收所需时间和回收能获得的空间),根据运行的gc时间,回收价值最大的region

步骤:类似cms

初始标记

并发标记

最终标记

筛选回收

相关文章

网友评论

      本文标题:深入理解java虚拟机读书笔记-垃圾收集器

      本文链接:https://www.haomeiwen.com/subject/qhyllxtx.html