JVM笔记(4)--垃圾回收器(2)-CMS和G1

第三章  垃圾收集器

  CMS

   1)CMS收集器:是一个以获取最短回收停顿时间收作为目标的收集器。

   2)回收过程:1 初始标记

         2 并发标记

         3 重新标记

         4 并发清除

        

         3)优势:并发收集,低停顿。

         4)劣势:1 对于处理器资源非常敏感,但是会随着处理器数量增加(处理器的核数为4最为合适)收集效率会下降。

       2 会产生“浮动垃圾”。在并发标记和并发清楚的阶段会产生新的垃圾对象。

       3 内存会产生碎片空间。因为CMS采用的是“标记-清除算法”。

   G1

   1)G1是采用面向局部收集的设计思路和基于Region的内存布局形式

   2)服务目标:G1是面向服务端应用的垃圾收集器。

   3)设计思路:不在是面向新生代,老年代或是Java堆进行垃圾收集(不采用分代理论),回收衡量标准不在是它属于哪个分代,

          而是哪里内存垃圾数量最多,回收该区域的收益最大(这种回收方式主要是因为Region的内存布局)。

      4)G1的回收过程

      1.初始标记

      2.并发标记

      3.最终标记

      4.筛选回收

      

      5)G1的优势与劣势

     优势:1.采用的回收算法为”标记-整理“,不会产生碎片空间,而且可供大对象分配内存。

        2.可以指定最大停顿时间(一般为100~200或200~300毫秒)。

        3.设计追求为可以满足应用的内存分配速率,不是把整个Java堆完全清理干净。

     劣势:1.从内存占用上来说,G1和CMS都采用的卡表处理跨代指针,但是G1的设计更为复杂。

        2.从执行负载上来说,G1采用写后屏障来更新维护卡表,要实现原始快照搜索还使用写前屏障来跟踪并发时指针的变化情况,相对于CMS来说更为复杂。

原文地址:https://www.cnblogs.com/linyu1/p/13976915.html