10、了解JVM判断对象可回收的神秘法则!

本文详细介绍了JVM中垃圾回收的触发时机,通过可达性分析算法判断对象是否可回收,探讨了强引用、软引用、弱引用和虚引用的区别,并解析了finalize()方法在对象回收中的作用。在内存不足时,软引用关联的对象会被回收,而弱引用对象在GC时会被自动回收。了解这些机制有助于优化Java应用程序的内存使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10.1、垃圾回收触发时机?

在我们之前的学习中,我们已经了解到,当我们的系统在运行过程中创建对象时,这些对象通常会被优先分配在所谓的“新生代”内存区域,如下图所示。
在这里插入图片描述

在新生代中,当对象数量逐渐增多,接近填满整个空间时,会触发垃圾回收机制。这个机制的作用是回收那些不再被引用的对象,从而释放内存空间。

需要特别注意的是,这是新生代垃圾回收的一个关键触发时机。如下图。
在这里插入图片描述

那么本文就来针对这个过程,再次梳理其中的一些细节,看看触发垃圾回收的时候,到底是按照一个什么样的规则来回收垃圾对象的。

10.2、了解哪些引用导致对象无法被清理

首先第一个问题,一旦新生代快满了,那么垃圾回收的时候,到底哪些对象是能回收的,哪些对象是不能回收的呢?
这个问题非常好解释,JVM中使用了一种可达性分析算法来判定哪些对象是可以被回收的,哪些对象是不可以被回收的。
这个算法的意思,就是说对每个对象,都分析一下有谁在引用他,然后一层一层往上去判断,看是否有一个GC Roots。
这句话相当的抽象,是不是?

首先,我们来探讨一个关键问题:当新生代区域即将填满时,垃圾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无法无天过路客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值