垃圾回收器及其组合

8.5. 垃圾回收器及其组合

1)GC大致的分类
在年轻代空间耗尽时进行回收的机制,叫做MinorGC/YGC,频率比较高,因为大部分对象的存活寿命较短,在新生代里被回收。性能耗费较小。
在老年代耗尽时进行回收或是在新生代和老年代同时进行回收的机制,叫做MajorGC/FullGC。默认堆空间使用到达80%(可调整)的时候会触发fgc。以我们生产环境为例,一般比较少会触发fgc,有时10天或一周左右会有一次。
在这里插入图片描述

2)GC调优中的栈上分配和线程本地分配
在GC调优中,栈上分配和线程本地分配无需调整。
3)常用的垃圾回收器
常用垃圾回收器有以下这么十种。

4)垃圾回收器的发展历史
JDK诞生 Serial追随,提高效率,诞生了PS,为了配合CMS,诞生了PN,CMS是1.4版本后期引入,CMS是里程碑式的GC,它开启了并发回收的过程,但是CMS毛病较多,因此目前任何一个JDK版本默认是CMS,引入CMS并发垃圾回收是因为无法忍受STW。
5)实际生产中的垃圾回收器组合使用
在实际生产中,垃圾回收器的一般都是组合使用的,组合种类有:Serial+Serial Old、Parallel Scavenge + Parallel Old、ParNew + CMS,其他的组合虽然也有(见图中的连线),但是不常见。
在这里插入图片描述

6)物理分代结构
从上面图中可以发现,在Serial、Serial Old、Parallel Scavenge、Parallel Old、ParNew 、CMS中物理上也是分年轻代和老年代的,但是Epsilon、G1、ZGC、Shanandoah是物理不分的,其中G1只是逻辑分代但是物理不分代,另外三个是物理和逻辑均不分代的。
7)垃圾回收器和内存大小的关系
Serial垃圾回收器能够处理几十兆的内存大小;Parallel Scavenge垃圾回收器能够处理上百兆到几个G的内存大小;CMS垃圾回收器能够处理几个G到二十几个G的内存大小;G1垃圾回收器能够处理上百G的内存大小;ZGC垃圾回收器能够处理4T的内存大小。
8)吞吐量和停顿时间的意义
停顿时间越短就越适合需要与用户交互或保证服务响应质量的程序,良好的响应速度能提升用户体验。而高吞吐量则以最高效率的利用处理器资源,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的分析任务。
Parrallel Scavenge和Parrallel Old垃圾回收器以吞吐量为优化目标。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值