垃圾收集器

垃圾收集器是内存回收的具体实现
并发收集器:指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态
并发收集器:指用户线程与垃圾收集线程同时执行(但不一定时并行的,可能会交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个CPU上。
在这里插入图片描述
上图展示了作用于不同分代的收集器,若两个收集器之间存在连线,则说明它们可以搭配使用。虚拟机所处的区域,则表示它是属于新生代收集器还是老年代收集器。

Serial收集器

在这里插入图片描述
单线程收集器,进行垃圾收集时,必须暂停其他所有的工作线程,直至其收集结束。
优点:简单高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最 高的单线程收集效率。在用户的桌面应用场景中,分配给虚拟机管理的内存一般来说不会很 大,收集几十兆甚至一两百兆的新生代(仅仅是新生代使用的内存,桌面应用基本上不会再 大了),停顿时间完全可以控制在几十毫秒最多一百多毫秒以内,只要不是频繁发生,这点 停顿是可以接受的。所以,Serial收集器对于运行在Client模式下的虚拟机来说是一个很好的 选择。

ParNew收集器

在这里插入图片描述
Serial收集器的多线程版本
ParNew收集器在单CPU的环境中绝对不会有比Serial收集器更好的效果,甚至由于存在线程交互的开销,该收集器在通过超线程技术实现的两个CPU的环境中都不能百分之百地保 证可以超越Serial收集器。当然,随着可以使用的CPU的数量的增加,它对于GC时系统资源 的有效利用还是很有好处的。它默认开启的收集线程数与CPU的数量相同,在CPU非常多 (譬如32个,现在CPU动辄就4核加超线程,服务器超过32个逻辑CPU的情况越来越多了)的环境下,可以使用-XX:ParallelGCThreads参数来限制垃圾收集的线程数

Parallel Scavenge收集器

采用复制算法的新生代收集器,也是并行的多线程收集器。
特点是尽可能达到一个可控制的吞吐量。

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

支持GC自适应调节策略(GC Erogonomics)

Serial Old收集器

是Serial收集器的老年代版本,它同样是一个单线程收集器,使用“标记-整理”算法。
在这里插入图片描述
。这个收集器的主要意义也是在于给Client模式下的虚拟机使用。如果在Server模式 下,那么它主要还有两大用途:一种用途是在JDK 1.5以及之前的版本中与Parallel Scavenge 收集器搭配使用[1],另一种用途就是作为CMS收集器的后备预案,在并发收集发生Concurrent Mode Failure时使用。

Parallel Old收集器

是Parallel Scavenge收集器的老年代版本,使用多线程和“标记-整理”算法。
直到Parallel Old收集器出现后,“吞吐量优先”收集器终于有了比较名副其实的应用组 合,在注重吞吐量以及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge加Parallel Old 收集器。
在这里插入图片描述

CMS收集器

CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的Java应用集中在互联网站或者B/S系统的服务端上,这类应用尤其重 视服务的响应速度,希望系统停顿时间最短,以给用户带来较好的体验。CMS收集器就非常 符合这类应用的需求。 、

CMS收集器是基于“标记—清除”算法实现 的,它的运作过程相对于前面几种收集器来说更复杂一些,整个过程分为4个步骤,包括:

  • 初始标记
  • 并发标记
  • 重新标记
  • 并发清除

在这里插入图片描述
由于整个过程中耗时最长的并发标记和并发清除过程收集器线程都可以与用户线程一起 工作,所以,从总体上来说,CMS收集器的内存回收过程是与用户线程一起并发执行的。通 过图3-10可以比较清楚地看到CMS收集器的运作步骤中并发和需要停顿的时间。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值