JVM垃圾收集器(二) —— 新生代垃圾收集器

在看本文之前,建议先去了解一下几个概念先再来看下文哈,大牛请忽略,哈哈~

所有收集器概括图

下面先给大家看一下所有收集器及其关联的示意图,然后我们再对每个回收器进行讲解:
这里写图片描述
★★★ 注意:如果两个收集器之间存在连线,就说明它们可以搭配使用


Serial收集器

1、特点:一个单线程的收集器;且运行时必须暂停其他所有的工作线程,直到它收集结束

2、虚拟机运行在Client模式下的默认新生代收集器

3、优点:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。

4、缺点:需要停止用户线程,也就是传说中的 “Stop The World”

5、Serial / Serial Old 收集器运行示意图:
这里写图片描述
注:上面的 “/” 表示的是新生代和老年代分别采用的是什么收集器哈,下面的图也是一样,Serial Old下面会讲,这里注意一下哈~


ParNew收集器

1、特点:ParNew收集器其实就是Serial收集器的多线程版本,只能在新生代中用~

2、优缺点:和Serial收集器时一样的~

3、许多运行在Server模式下的虚拟机中首选的新生代收集器

4、注意的点:该收集器默认的并行度和CPU数量相同

5、ParNew / Serial Old收集器运行示意图:
这里写图片描述


Parallel Scavenge收集器

1、特点:和ParNew收集器一样,该收集器是在新生代的,也是并行的,也是采用 复制算法

2、和ParNew收集器的区别:Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput)。
所谓吞吐量就是CPU用于运行用户代码的时间与CPU总消耗时间的比值,即吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)。
假如虚拟机总共运行了100分钟,其中垃圾收集花掉1分钟,那吞吐量就是99%。

3、说明:停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户体验
高吞吐量则可以高效率地利用CPU时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。


本文的内容和图片参考自:《深入理解Java虚拟机:JVM高级特性与最佳实践》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值