java scavenge_【Java】JVM(三)、Java垃圾收集器

2ff0d9abf5a662e5f79f28e9a0e0edf6.png

一、Minor GC、Major GC 和 Full GC

Minor GC:清理新生代空间,当Eden空间不能分配时候引发Minor GC

Major GC:清理老年代空间

Full GC:清理Java堆空间

二、新生代垃圾收集器

1. Serial 收集器

236ea448d828305d7c4f2ae2253604ab.png

线程:单线程收集器,

算法:新生代标记复制,老年代标记整理

缺点:在进行垃圾收集时候需要停止所有用户线程(STW)

优点:没有线程交互开销

2. ParNew 收集器

2dcb8aa10037295ebcdd1c101bc0575b.png

在Serial收集器上进行改进,将GC改成了多线程,其他的包括Serial可用的所有控制参数、收集算法、STW、对象分配规则、回收策略等都与Serial完全一样。

3. Parallel Scavenge 收集器

算法:复制算法

线程:多线程

关注点:系统吞吐量

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

三、老年代垃圾收集器

1. Serial Old 收集器

1c9435c862a2777bb3fb7e269288b262.png

Serial Old 是Serial 的老年代版本

线程:单线程

2. Parallel Old 收集器

161929a634c234ae2a150c2e11ab72f0.png

Parallel Old 是 Parallel Scavenge 的收集器老年代版本,

3. CMS(Concurrent Mark Sweep 并发标记清理)收集器

a9d8b4e881adb37c415a547e90390b21.png

线程:多线程

算法:标记清理

步骤

1)初始标记:标记GC Root 能直接关联到的对象

2)并发标记:GC Root Tracing 过程

3)重新标记:标记并发期间Java程序产生的对象

4)并发清除:清理垃圾

缺点:

1)对CPU敏感,虽然不会停止CPU,但是会占用部分CPU资源

2)无法处理浮动垃圾(在初始标记之后,并发标记时候产生的垃圾),只能留着下次清理

3)大量的空间碎片

4. G1 收集器

c30ee9ce55d173d91c6dacc39f152e5c.png

优势:

1)并行与并发

2)分代收集

3)空间整合

4)可预测停顿

步骤:

1)初始标记

2)并发标记

3)最终标记(修正并发标记期间用户继续运作导致标记变动的一部分记录)

4)筛选回收

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值