java对象在虚拟机中的生命周期

文章介绍Java对象被类加载器加载到虚拟机后的7个阶段,包括创建、应用、不可见、不可达、收集、终结和对象空间重新分配阶段,详细说明了各阶段的特征和步骤,如创建阶段需为对象分配空间、构造对象等。

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

本片文章取自《Android进阶解密》

 

在java对象被类加载器加载到虚拟机中后,java对象在java虚拟机中有7个阶段

1.创建阶段(created)

步骤:

(1)为对象分配存储空间

(2)构造对象

(3)从超累到子类对static成员进行初始化

(4)递归调用超类的构造方法

(5)调用子类的构造方法

2.应用阶段(In use)

当对象被创建,并分配给变量赋值时,状态就切换到了应用阶段。这一阶段的对象至少具有一个强引用,或是显式的使用软引用、弱引用或者虚引用

3.不可见阶段(invisible)

在程序中找不到对象的任何强引用,比如程序的执行已经超出了该对象的作用域。在此阶段,对象仍可能被特殊的强引用GC Roots持有者,比如对象被本地方法栈中jni引用或被运行中的线程引用等

4.不可达阶段(Unreachable)

在程序中找不到对象的任何强引用,并且垃圾收集器发现对象不可达

5.收集阶段(collected)

垃圾收集器已经发现对象不可达,并且垃圾收集器已经准备好要对该对象的内存空间重新进行分配,这个时候如果该对象重写了finalize方法,则会调用该方法

6.终结阶段(Finalized)

在对象执行完finalize方法后,任然处于不可达状态时,或者对象没有重写finalize方法,则该对象进入终结阶段,并等待垃圾收集器回收该对象空间

7.对象空间重新分配阶段(deallocated)

当垃圾收集器对对象的内存空间进行回收或者再分配时,这个对象就会彻底的消失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值