深入理解jvm读书笔记六 垃圾收集器种类

Serial收集器

缺点

  • 单线程收集器
  • GC时必须停止所有其它工作线程,直到垃圾收集结束

优点

  • 在单cpu环境下,单线程垃圾收集效率高
  • 在用户的桌面场景中,分配给jvm的的内存一般来说不会很大,收集几十兆甚至一两百兆的新生代内存,停顿时间可以控制在最多一百多毫秒内
  • 适合client模式下的虚拟机

ParNew收集器

这个垃圾收集器时Serial收集器的多线程版本,除了使用多条线程进行垃圾收集外,其余行为包括Serial可用的所有控制参数、收集算法、Stop The World,对象分配规则、回收策略等都与Serial收集器完全一样。

另外,如果老年代使用CMS收集器,那新生代就只有Serial和ParNew收集器可以和CMS收集器配合。

Parallel Scavenge收集器

新生代收集器,和ParNew收集器一样也是并行收集器。

这款收集器的特点是它关注的点与其它收集器不同。CMS等收集器关注的是尽可能缩短垃圾收集时用户线程的停顿时间,而ParNew的目标是达到一个可控制的吞吐量。吞吐量=运行用户代码时间 / (运行用户代码时间 + 垃圾收集时间)。停顿时间越短越适合与用户交互的程序,而高吞吐量可以高效的利用CPU时间,尽快完成运算任务,所以ParNew收集器适合用在后台运算居多的场景。

和ParNew的另一个区别是,这款收集器提供一个-XX:+UseAdaptiveSizePolicy参数,这是一个开关参数,当这个参数打开之后,就不需要手工指定新生代的大小,Eden和Survivor区的比例、晋升老年代对象年龄等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最大的吞吐量,这种调节方式成为GC自适应的调节策略。但是还是要指定一些基本的参数,例如-Xmx(设置最大堆内存),然后设置MaxGCPauseMillis参数(更关注最大停顿时间)或TCTimeRatio(更关注吞吐量)参数给虚拟机设置一个优化目标。

减少最大停顿时间的代价是调小新生代的内存空间,这虽然可以减少用户停顿时间,但是垃圾收集的频率会升高,吞吐量也会下降。

Serial Old收集器

Parallel Old收集器

CMS收集器

先说下并发和并行的区别,并发是指垃圾回收线程和用户线程同时执行(或交替执行),并行是指垃圾回收线程同时执行,但用户线程暂停执行。

G1收集器

新生代和老年代垃圾收集器的搭配

垃圾收集器参数总结

理解GC日志

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值