JVM老年代垃圾回收器工作时内部又干了些啥?


prtyaa
prtyaa 2023-12-28 15:37:00 49718 赞同 0 反对 0
分类: 资源
1、年轻代采用复制算法来回收。 本文我们就要进入最核心的老年代垃圾回收环节了,之前的文章大家看过之后对JVM的核心原理都有一定的了解了,其实年轻代的垃圾回收通过复制算法来,还是比较简单的。

2、CMS垃圾回收的基本原理

一般老年代选择的垃圾回收器是CMS,他采用的是标记清理算法,其实非常简单,就是先用之前文章里讲过的标记方法去标记出哪 些对象是垃圾对象,然后就把这些垃圾对象清理掉,如下图所示

上面图里是一个老年代内存区域的对象分布情况

Full GC 的时机有:

1、现在假设因为老年代内存空间小于了历次Minor GC后升入老年代对象的平均大小, 判断Minor GC有风险,可能就会提前触发Full GC回收老年代的垃圾对象。

2、或者是一次Minor GC后的对象太多了,都要升入老年代,发现空间不足,出发了一次老年代的Full GC。

总之就是要进行Full GC了,此时所谓的标记-清理算法,其实就是我们之前给大家讲过的一个算法,先通过追踪GC Roots的方法,看 看各个对象是否被GC Roots给引用了,如果是的话,那就是存活对象,否则就是垃圾对象。

先将垃圾对象都标记出来,然后一次性把垃圾对象都回收掉,如下图

大家看下图的红圈处就是所谓的内存碎片,这种碎片不大不小的,可能放不下任何一个对象,那么这个内存就被浪费了,之前我们聊 过这个问题。


3、CMS如何实现系统一边工作的同时进行垃圾回收?CMS是标记清除,而G1才是标记整理,所以CMS之后老年代存在碎片化的问题。

1、初始标记 存在 stop the world
2、并发标记
3、重新标记 存在 stop the world
4、并发清除

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
prtyaaL2
粉丝 1 资源 1949 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  126
统信桌面专业版【全盘安装UOS系统】介绍  121
银河麒麟桌面操作系统安装佳能打印机驱动方法  114
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!