JVM中的GC算法

本文介绍了JVM中的垃圾回收算法,包括垃圾定义、引用计数和可达性分析算法,以及各种GC策略如标记清除、复制、标记压缩和分代收集。详细讲解了不同算法的优缺点和适用场景,并探讨了内存溢出、内存泄露问题以及各种垃圾回收器,如SERIAL、CMS和G1等。
摘要由CSDN通过智能技术生成

垃圾是什么

什么是垃圾?
垃圾就是在运行中没有任何指针指向的一块空间。

不及时进行内存清理,会让一大块空间空闲,让大量空间浪费,甚至导致内存溢出。

及时清理空间,可以将垃圾去除掉,整理空间内存,将省下来的内存空间交给新的对象去使用。

在这里插入图片描述
Minor Gc就是YGC,MajorGC是针对老年代的垃圾回收。
Full GC
调优就是让GC执行少一些
在这里插入图片描述GC执行策略
在这里插入图片描述
在这里插入图片描述

什么是垃圾?
在内存中,没有任何指针指向的对象,就是垃圾,反正以后也不会在被用到了
不去及时的清理垃圾,会出现一个问题,就是垃圾所占用空间不会被别人所使用长此以往,会沾满空间,
在这里插入图片描述

垃圾回收的算法:
第一步垃圾标记阶段:
标记哪些是垃圾,需要被调查处理
OOM会发生在方法区和堆区
StackOverFlow会发生在两个栈区
**
算法两个:
引用计数器算法和可达性分析算法,java使用可达性分析算法

引用计数算法

**
在这里插入图片描述可达性分析算法:
在这里插入图片描述
相当于在中央有巨大影响力的,派系大佬当年的小弟,都不能动,你不知道和大佬关系咋样,所以你不能动这些人,不然完蛋了。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
清除算法:
标记好之后要进行清除
标记清除算法:
在这里插入图片描述在这里插入图片描述空间完全碎片化了,空间利用率不高。还需要进行标记,比较麻烦。

重点标注哪些干部是老领导当年的部下,这些人惹不起,剩下的都往死里整。
根据根节点才能遍历标记到所有不能清除的引用练。
最大问题,碎片问题太严重了。空间地址不够连续,空间完全不连续。

记住我们要标记的是不能清除的东西,因为GC链带你找到的就是所有不能动的。
复制算法:
在这里插入图片描述
好处是省去了标记这个环节,并不需要标记,直接将需要的对象放进另一块区域中,按连续顺序排列好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值