JVM几个比较经典的垃圾收集器整合

1、Serial收集器

Serial收集器是最基础、历史最悠久的收集器,这个收集器是一个单线程工作的收集器,但它的“单线 程”的意义并不仅仅是说明它只会使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强 调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束,我们也把这个叫做“Stop The World”。

2、ParNew收集器

ParNew收集器实质上是Serial收集器的多线程并行版本。

TIP:对于新生代,由于回收次数频繁,因而采用并行方式效率较高,而老年代相反,采用串行效率较高。

3、Parallel收集器

Parallel Scavenge收集器的特点是它的关注点与其他收集器不同,CMS等收集器的关注点是尽可能 地缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的目标则是达到一个可控制的吞吐 量(Throughput)。所谓吞吐量就是处理器用于运行用户代码的时间与处理器总消耗时间的比值, 即:

 适合于后台任务较多,交互少的场景,比如订单处理,计算等等。

 与此同时,Parallel Old收集器应运而生,同样在老年区实现了并行处理

4、CMS收集器

CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,追求的目标是低延迟,缩短收集期间用户进程的暂停时间。

 在CMS的并发标记和并发清理阶 段,用户线程是还在继续运行的,程序在运行自然就还会伴随有新的垃圾对象不断产生,但这一部分 垃圾对象是出现在标记过程结束以后,CMS无法在当次收集中处理掉它们,只好留待下一次垃圾收集 时再清理掉,这一部分垃圾就称为“浮动垃圾”,CMS是无法清除浮动垃圾的,这是它的一大缺点。

此外,CMS是基于标记清除算法的,所以会产生很多碎片,易导致Full GC,影响效率。为什么没有采用标记整理算法的原因是:CMS是并发清理的,在清理的时候用户线程也在同时运行,所以若采用标记整理算法,会导致存储空间的移动,会导致一些存储块的移动,很可能导致用户进程寻址失败。

5、Garbage First收集器

目标:在延迟可控的情况下获得较高的吞吐量,也可以说是结合了CMS和Parallel。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这代码有点上头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值