重新开始学习编程系列Day08——JVM垃圾回收GC

一、前言

大家好,我是苍何。最近思考了一个问题,为什么会出现公司面试造火箭,工作扭螺丝的现象,包括各种八股文的连环大绝杀问到你不会为主,其实这是考察你的知识面以及掌握的深度,而为什么需要这样呢?归其原因,无非是通过筛选找到那些会思考的人,他们需要的并不是CRUD的工具人,而是会思考能创新的工程师。

当你深刻理解到这点,我想不用刻意去学习,在工作中,肯定会吾日三省吾身。

于是乎,这个重新开始学习编程系列文章出来了。

愿与君共勉!

这是JVM系列知识的最后一篇文章,本文围绕垃圾回收GC,涉及常用的垃圾回收算法,以及几种垃圾回收器。

二、什么是垃圾

我们知道java语言是支持自动垃圾回收的,我们创建对象后,GC可以为我们回收掉无用的垃圾对象,那么什么是垃圾?

说白了就是,没有人用了就是垃圾
在这里插入图片描述
在这里插入图片描述
主要是堆中垃圾回收,方法区回收的比较少,因为判断一个类是无用的条件太苛刻了。

在这里插入图片描述

三、垃圾回收相关算法

1、引用计数法

每个对象保存了一个引用计数器属性,只要有对象引用他了,就加1,引用失效时,就减1,当引用值为0 的时候,代表就是垃圾对象,该被回收,优点是简单效率较高,缺点是没办法解决循环引用的问题,所以java并没有选择引用计数法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、可达性分析算法

以根对象集合GC Roots为起始点,按照从上到下的方式搜索被根对象所连接的目标对象是否可达,内存中的对象都会直接或间接的被根对象相连着,即一个对象的引用链,如果目标对象无任何引用连项链,则是不可达的垃圾对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GC Roots

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、对象的finalization机制

即是“死亡对象”的一块免死金牌。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、寻找GC Roots溯源工具

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、标记清除算法

标记可达对象,清除未被标记的垃圾对象。
在这里插入图片描述
在这里插入图片描述

6、复制算法

新生代中的S0和S1区用的就是复制算法,将活着的内存分为2块区,每次只使用其中一块,GC时将存货对象复制到另一块空闲空间,并清空原来的空间。
在这里插入图片描述
在这里插入图片描述
如果存货对象太多,就不适合用复制算法,比如老年区存货对象较多,复制过去太消耗时间精力了。

7、标记整理算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8、对比三种算法

在这里插入图片描述

9、分代收集算法

年轻代用复制算法,老年代用标记清除和标记整理算法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10、增量收集算法

在这里插入图片描述

11、分区算法

在这里插入图片描述

三、垃圾回收相关概念

1、System.gc()

在这里插入图片描述

2、内存溢出OOM

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、内存泄漏

在这里插入图片描述
在这里插入图片描述

还有ThreadLocal也会导致内存泄漏

4、SWT

在这里插入图片描述
在这里插入图片描述

5、垃圾回收的并行与并发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、安全点和安全区域

安全点:

在这里插入图片描述
在这里插入图片描述
安全区域
在这里插入图片描述

7、引用相关(强软弱虚)

强引用:引用关系只要还在,不会被GC(99%的场景)
软引用:引用关系还在,内存不够了就GC,内存够就GC(缓存)
弱引用:引用关系还在,也会被GC(缓存)
虚引用:获得一个系统通知,追踪
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、垃圾回收器

1、GC分类和性能指标

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、7款经典的垃圾回收器

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
JDK8中默认的组合

在这里插入图片描述
JDK8也可以用在这里插入图片描述

3、Serial回收器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、ParNew

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、CMS回收器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、G1收集器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员苍何

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值