美文网首页
深入理解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