Java~学习简单了解GC中常见的垃圾回收器

了解垃圾回收器

  • 在垃圾回收器里主要做的俩件事就是: 标记(可达性分析) + 回收(标记清除 标记复制 标记整理 对象分代)

  • 如何评价垃圾回收器的好坏

  1. 回收的效率 就是扫一遍 可以扫到多少垃圾
  1. 回收的速度 扫一遍要多长时间
  1. 垃圾回收和应用线程之间是否可以请发执行
  1. 垃圾回收器是否支持多线程
  1. 回收的时间是否是可以预测的 承诺10分钟一定扫完 即使扫的不是很干净 但是最大程度上把一些重要垃圾清理掉
  • Java中Stop-The-World机制简称STW,是在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起(除了垃圾收集帮助器之外)。Java中一种全局暂停现象,全局停顿,所有Java代码停止,native代码可以执行,但不能与JVM交互;所以这些现象多半是由于GC引起。

Serial收集器

  • 历史最悠久的收集器

  • 给新生代使用 串行回收 使用复制算法 是单线程进行标记+回收

ParNew收集器

  • 给新生代使用 支持多线程进行GC(并行)

  • 回收效率比Serial高

Parallel Scavenge收集器

  • 给新生代使用 支持多线程进行GC(并行)

  • 设计初衷是为了尽量缩短STW的时间 但是这个是以牺牲吞吐量和新生代空间作为代价的 , 相当于承诺用户 在一定时间内就会完成一次GC虽然我删除的不是很干净 但是能够很大程度上清除大部分垃圾了

Parallel Old收集器

  • 老年代收集器 支持多线程执行(并行)

  • ParNew的老年版本

  • 这个收集器使用的是标记整理算法 效率更高 但是消耗的CPU资源更多

CMS收集器

  • 老年代收集器 支持多线程并行 采用标记-清除

  • 特点: 尽肯能缩短STW的时间

a: 初始标记 [STW]

只是把GCRoot直相关的对象先标记起来

b: 并发标记 [耗时 但不涉及STW]

执行整个遍历过程 从GCRoot开始 把所有访问到的对象都遍历一遍 不需要暂停用户线程 虽然耗时但是可以和用户线程并发 并发标记完成后得到的垃圾结果可能就和真实效果存在一定的误差

c: 重新标记 [STW]

修改刚才的误差 由于刚才误差的必经是少数 重新标记代价不是很大 虽然STW了 但是时间很小了

d: 并发清除 [耗时 但不涉及STW]

多线程的方式吧刚才的对象都释放掉 直接清除 当然也可以和应用线程并发执行

  • 优点: 能够让STW时间尽量缩短

  • 缺点: 内存碎片 应用线程是并发执行的 很消耗cpu的资源

G1(重要)

  • 比较新的回收器 Java11开始默认使用的回收器

  • 算是最优秀的垃圾回收器

  • 老少通吃 既可以回收新生代 也能回收老年代

在这里插入图片描述

每一个矩形区域称为一个"region"

E代表伊甸区 S代表生存区 T代表老年代 H表示放大对象的区域

G1代回收的时候不一定需要一次性把整个内存都会收完 而是以region为单位进行回收(回收的粒度更加精细)

针对新生代的region同样是使用复制算法进行回收

针对老年代的回收类似CMS 但还是有一定差距

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618164986)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值