JVM基础_9_各种垃圾回收器

垃圾回收器的性能指标

主要是通过吞吐量,暂停时间和内存占用三大指标。

  • 吞吐量:运行用户代码的时间占总运行时间的比例:吞吐量=用户代码运行时间/(用户代码运行时间+垃圾收集时间)
  • 暂停时间:执行垃圾回收时,用户线程被暂停的时间
  • 内存占用:Java堆区所占内存的大小

七款垃圾处理器

串行处理器:Serial,Serial Old
并行回收器:ParNew,Parallel Scavenge,Parallel Old
并发回收器:CMS,G1
新生代收集器:Serial,ParNew,Parallel Scavenge
老年代收集器:Serial Old,Parallel Old,CMS
整堆收集器:G1

Serial收集器

Serial是一种串行运行的,执行新生代收集的收集器。采用的是复制算法。
Serail Old收集器是串行运行的,运行老年代收集的收集器。采用的是标记-整理算法。

在这里插入图片描述
当Serial/Serial Old收集器运行时,其他用户线程必须要暂停,用户线程和GC线程无法并发运行。

ParNew回收器

ParNew是Serial收集器的多线程版本,采用并行回收的方式执行新生代的内存回收。
在这里插入图片描述

Parallel Old回收器

Parallel Old是基于并行回收的处理老年代垃圾的垃圾回收器,采用的是标记整理算法。
在这里插入图片描述

Parallel Scavenge回收器

Parallel Scavenge回收器采用的是并行回收,复制算法的机制,被称之为吞吐量优先的垃圾回收器。
高吞吐量可以高效率的利用CPU时间,尽快完成程序运算任务,主要适合在后台运算而不太需要交互的任务。
在这里插入图片描述
Java8中,默认是此收集器。

CMS回收器

是第一款真正意义上的并发收集器,第一次实现了让GC线程和用户线程同时工作。它采用的是标记清除算法,负责老年代的GC。

在这里插入图片描述
运行期间主要分为四个阶段:

  • 初始标记阶段:所有工作线程暂停,标记出所有GC roots对象能直接关联到的对象,由于这类对象比较少,所以速度很快。
  • 并发标记阶段:从Gc roots直接关联对象开始遍历整个对象图的过程,耗时较长但是不需要停顿用户线程,可以和GC线程并发运行。
  • 重新标记阶段:暂停用户线程,修正并发标记阶段,因为用户线程继续运行导致标记产生变动的一部分对象的标记记录
  • 并发清除阶段:GC线程与用户线程并发执行,清除掉所有被判定为死亡的对象。

CMS的优点和缺点

优点:1.并发收集 2. 低延迟
缺点:1.由于采用标记清除算法,所以会产生内存碎片 2.低吞吐量 3.无法处理并发标记阶段新产生的垃圾对象,无法及时回收这些垃圾对象

G1回收器

G1是一个并行回收器,将堆内存分割为很多区域Region,跟踪每一个Region里面堆积的垃圾的价值大小(根据回收所获得空间大小以及回收所需时间的经验值),在后台维护一个优先列表,根据所允许的收集时间,优先回收价值最大的Region。

G1优点

优点:1并发运行 2.分代收集
在这里插入图片描述

垃圾回收器总结

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值