java虚拟机常见的几种垃圾收集器简介

本文介绍了Java虚拟机中几种常见的垃圾回收器,包括Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS以及G1收集器。详细解释了它们的特点、适用场景及配置参数。
摘要由CSDN通过智能技术生成

新生代收集器

       Serial收集器

它是最基本、历史最悠久的收集器,在JDK1.3.1之前是虚拟机新生代收集的唯一选择。它是一个单线程的收集器,到现在为止,它依然是虚拟机运行在Client模式下的默认的新生代收集器。优点:简单高效。

特点:只会使用一个CPU或一条收集线程去完成垃圾收集工作,在进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。它没有线程交互的开销,所以可以获得最高的单线程收集效率。

 

ParNew收集器

Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为和Serial收集器完全一样。是Server模式下的虚拟机中首选的新生代收集器。目前只有它能与CMS收集器配合工作。是-XX:+UseConcMarkSweepGC选项后的默认新生代收集器,也可以使用-XX:+UseParNewGC选项来强制制定它。默认开启的收集线程数与CPU的数量相同。可以使用-XX:ParallelGCThreads参数来限制垃圾收集的线程数。

Parrallel Scavenge收集器

此收集器的关注目标是达到一个可控制的吞吐量。高吞吐量可以最高效率地利用CPU时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。

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

-XX:MaxGCPauseMillis控制最大垃圾收集停顿时间

-XX:GCTimeRatio直接设置吞吐量大小

-XX:UseAdaptiveSizePolicy开启自适应调节策略

老年代收集器

Serial Old收集器

Serial收集器的老年代版本,使用“标记-整理”算法

Parrallel Old收集器

       Parrallel Scavenge老年代版本,使用多线程和“标记-整理”算法,

CMS(Concurrent Mark Sweep)收集器

基于“标记-清除”算法实现,以获取最短回收停顿时间为目标的收集器,主要用于重视服务的响应速度的应用如B\S系统的服务端。

过程:

初始标记:需要Stop The World,只是标记一下GC Roots能关联到的对象,速度很快。

并发标记:进行GC Root Tacing的过程。

重新标记:需要Stop The World,修正并发标记期间,因用户程序继续运行而导致标记产生变动的那一部分对象的标记记录,停顿时间比初始标记阶段稍长,但远比并发标记阶段短。

并发清除:进行并发清除。

 

缺点:

1、对CPU资源敏感,会占用一部分线程资源,默认启动线程数量是(CPU数量+3)/4

2、无法处理浮动垃圾,可能出现“Concurrent Mode Failure”失败从而导致另一次Full GC的产生。

CMS默认在老年代使用了68%的空间后就会被激活,可以适当调高参数-XX:CMSInitiatingOccupancyFraction的值来提高触发百分比,以便降低内存回收次数以获取更好的性能。但不能设置太高,要预留适当的内存供程序使用,否则可能会出现“Concurrent Mode Failure”导致虚拟机启动后备预案临时启用Serial Old收集器来重新进行老年代的垃圾收集,这样停顿的时间就很长了。

3、可能会产生大量的空间碎片,导致提前出发一次Full GC。

参数-XX:UseCMSCpactAtFullCollection,设置CMS在完成垃圾收集之后是否要进行一次内存碎片整理。仅在使用CMS收集器时生效

参数-XX:FullGCsBeforeCompaction,设置CMS收集器在进行若干次垃圾收集之后在启动一次内存碎片整理。仅在使用CMS收集器时生效

 

G1收集器

基于“标记-整理”算法实现,可以非常精确的控制停顿。(//to do)

转载于:https://www.cnblogs.com/huster-huwentao/p/9329106.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值