JVM整理小结-垃圾收集器

Serial收集器
算法

单线程收集器,只使用一个CPU或者一条收集线程完成垃圾收集工做,在收集的时候“Stop The World”.多线程

优点:在单CPU中,简单高效并发


ParNew收集器spa

是Serial收集器的多线程版本,是许多运行在Server模式下的虚拟机中首选的新生代收集器,目前只有ParNew收集器 和 Serial收集器 能与CMS搭配使用。在收集的时候“Stop The World”.线程


ParallelScavenge收集器对象

使用复制算法的收集器,是并行的多线程收集器。ParallelScavenge收集器目标是达到一个可控制的吞吐量(Throughput)。内存

吞吐量=运行用户代码时间 / (运行客户代码时间+垃圾收集时间)ci

eg:虚拟机总共运行100分钟,垃圾收集花费1分钟,吞吐量就是99%。资源

Serial Old 收集器虚拟机

单线程,使用“标记-整理”算法。主要意义被Client模式下的虚拟机使用。若是在Server模式下,两大用途:在JDK1.5.及以前版本与ParallelScavenge收集器搭配使用;做为CMS的后备预案。


Parallel Old 收集器

ParallelScavenge收集器的老年代版本,使用多线程和“标记-整理”算法。在JDK1.6.中开始提供。

在注重吞吐量及CPU资源敏感的场合,能够考虑ParallelScavenge收集器+Parallel Old 收集器


 

CMS收集器

是一种以获取最短回收停顿时间为目标的收集器。重视服务的响应速度,但愿系统停顿时间最短,以给用户带来最好的体验。CMS收集器很是符合这类应用的需求。

基于“标记-清除”算法,它的运行过程相对以前几种收集来讲更复杂一些,分为4个步骤:

  • 初始标记

  • 并发标记

  • 从新标记

  • 并发清除

初始标记 和 从新标记须要“Stop The World”。

初始标记仅仅只是标记一下GC Roots能直接关联到的对象,速度很快。

并发标记是进行GC Roots Treacing的过程。

从新标记阶段是修改并发标记期间,因用户程序继续运做而致使标记产生变更的那一部分对象的标记记录,该阶段停顿时间通常会比初始化标记阶段稍长,但远比并发标记的时间短。

因为整个过程耗时最长的 并发标记 和 并发清除 过程当中,收集器线程均可以与用户线程一块儿工做,整体上说,CMS收集器的内存回收过程是与用户线程比起并发执行的。

相关文章
相关标签/搜索