码迷,mamicode.com
首页 > 其他好文 > 详细

GC收集器

时间:2019-09-27 01:11:55      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:组织   一段   虚拟   垃圾收集器   分配   效果   标记   处理   默认   

①:Serial(串行)收集器

  最基本,历史最悠久的串行收集器,单线程组赛队列,jdk1.5之前默认的收集器。

  优点:简单高效,没有线程交互的开销。

  缺点:单线程,只会使用一个cpu/一条收集线程去完成垃圾收集。

  对应算法:年轻代复制算法,老年代标记整理算法。

②:ParNew收集器(Serial收集器的多线程版本)

  多CPU时对系统资源利用率很好,默认开启的收集线程数与CPU相同,单CPU时Serial有更好的效果。

③:Paraller Scavenge 收集器

  特点:并行,目标是达到一个可控制的吞吐量(运行用户代码时间/(运行用户代码时间+垃圾手机时间)),自适应调节策略。

  优点:适合需要与用户交互的程序,响应速度良好。

  缺点:无法与CMS收集器配合使用。

④:CMS收集器

  优点:并发,低停顿。

  缺点:对CPU资源敏感,面向并发设计的程序都对CPU资源敏感,因为占用了一部分线程(CPU资源)导致程序变慢,吞吐量降低,无法处理浮动垃圾,标记-清除算法导致内存碎片。

⑤:G1收集器

  特点:采用一种与众不同的方式组织堆内存,堆内存划分为多个大小相等的内存块,每个内存块是逻辑连续的一段内存,大小是2的N次方。

  G1提供了三种垃圾回收模式:Young GC,Mixed GC和Full GC,在不同条件下触发。

  Young GC 发生在年轻代的GC算法,一般对象(除了巨型对象)都在Eden Region 中分配内存,当被内存耗尽时,就会触发Young GC。

  Mixed GC 当对象晋升到老年代时,为了避免堆内存耗尽,虚拟机就会触发混合的垃圾收集器Mixed GC,会回收整个Young Region,还回收一部分Old Region。

  Full GC 如果对象内存分配速度过快,Mixed GC来不及回收,导致老年代占满,就会触发Full GC,就是单线程执行的serial old gc,会导致异常长时间的暂停时间,需要进行不断地调优,尽可能避免Full GC。

技术图片

GC收集器

标签:组织   一段   虚拟   垃圾收集器   分配   效果   标记   处理   默认   

原文地址:https://www.cnblogs.com/rempop/p/11595166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!