JVM(四) 垃圾回收的算法

本文深入探讨了Java中对象回收的判断标准与回收算法,包括可达性分析算法确定对象是否可回收,以及标记-清除、复制、标记整理和分代收集等垃圾回收算法的特点与应用场景。

一、哪些对象需要被回收(对象已死?先判断)
1.1 引用计数器(Java垃圾回收器从来没用过)
2.2 可达性分析算法
在这里插入图片描述
如果能被 GC Root找到的就是可达的。那哪些能被看成GC Root?
a, 虚拟机栈中本地变量表引用的对象
b, 方法区中 类静态变量引用的对象 & 常量引用的对象
c, 本法方法栈中JNI引用的对象
其实 GC Root 不可达的 像比如图中D对象,还是会再挽救一次 finalize()

二、判断完了以后,就是怎么回收。垃圾回收算法
2.1 标记-清除算法: 效率不高,有空间碎片
在这里插入图片描述
2.2 复制算法 : 没有碎片,但得分一块出来复制用,内存利用率(分一半内存)有问题
在这里插入图片描述

2.3 标记整理算法 :(8:1:1 新生代) 用的时间有点长
在这里插入图片描述
2.4 分代收集:根据不同的分代选择不同的算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值