JVM之GC

本文详细介绍了JVM中的垃圾回收机制,包括分代回收、垃圾回收器的种类及其特点,如Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS和G1。重点讨论了各种垃圾回收器在新生代和老年代的处理方式,以及如何优化STW时间和提高吞吐量。同时,还提及了G1收集器的Region概念和其在回收过程中的独特策略。
摘要由CSDN通过智能技术生成

接 JVM 那条
7.分代回收(垃圾分类)
划分依据:根据对象的年龄(经过GC扫描的轮次)
把堆划分成
新生代:伊甸区+生存区*2
老年代
一个对象的一生:
a)诞生于伊甸区
b)经过- -轮GC,如果存活,就通过复制算法,进入生存区
c)在生存区中经过GC后存活,还是通过复制算法,进入生存区2(每次经过GC扫描后,生存的对象都要被复制到另外-个生存
d)在生存区中活过一定的轮次之后,对象将被放到老年代(认为该对象生存时间会较长,就不再继续频繁扫描了)
e)老年代的对象也是需要进行GC的,扫描轮次没有新生代那么频繁了.

8.垃圾回收器
具体看下垃圾回收算法的集体实现/落地方式
在这里插入图片描述
评价垃圾回收器好坏的标准:
1).回收的空间效率.扫- -遍地,能扫出多少垃圾.
2).回收的速度.扫-遍地要花多长时间.
3).垃圾回收和应用线程之间能否并发执行.扫地的时候会不会影响到别人干活. (STW)
4).垃圾回收器是否是多线程的.
5).回收的时间是否是可预测的.承诺10分钟之内-定把地扫完.即使扫的不算非常干净,但是也最大程度上的把-些重要的垃圾清理掉了.

垃圾回收器里面都是要做两件事:标记(可达性分析) +回收(标记清除,标记复制,标记整理)

(1)1. Serial收集器.给新生代使用,串行回收.
复制算法.单线程进行标记+回收
在这里插入图片描述
单线程进行可达性分析+复制
当咱们进行回收的时候,应用程序线程,就都停止工作了. STW
STW的时间一定是要比应用线程运行时间短很多的.

(2)2. ParNew收集器新生代收集器 多线程并行GC)
在这里插入图片描述
此处的标记-回收过程使用多线程来完成.除此之外,和Serial收集器是非常相似的.
这个收集器回收效率就要比Serial版本更高- -些.

(3)Parallel Scavenge收集器(新生代收集器,并行GC)
设计初衷是为了尽量缩短STW时间.
GC停顿时间的缩短是以牺牲吞吐量和新生代空间作为代价的
工作流程同ParNew收集器,
这个收集器提供了一-些参数, 可以控制STW时间以及吞吐率.
相当于,承诺用户,在一定时间内就会完成一-次 GC,哪怕清理的不是特别干净,但是也能够很大程度上的清理到大部分垃圾了.

(4)Serial Old收集器老年代收集器,串行GC)
相当于Serial收集器的老年代版本.基本特点差不多,也是单线程的方式进行标记回收的.

在这里插入图片描述
单线程,串行的收集老年代内存.

(5)5. Parallel Old收集器(老年代收集器, 并行GC)
ParNew的老年代版本

(6)6. CMS老年代收集器并行GC [重要]
特点尽可能缩短STW时间.
采用的是多线程标记-清除
a)初始标记
[STW]
只是把和GCRoot直接相关的对象先标记出来.
这个标记过程时间比较短. (GCRo

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值