首页 理论教育 Java对象生命周期详解|零基础Java入门精通

Java对象生命周期详解|零基础Java入门精通

时间:2023-10-19 理论教育 版权反馈
【摘要】:Java底层是由JVM来运行的,Java中的对象从创建初始化到最后停止使用、被销毁是有一个完整生命周期的,其中包括的七个阶段分别是创建、应用、不可见、不可达、回收、终止和对象重新分配内存空间。本小节将对Java对象生命周期的各个阶段进行介绍。图10.6.1Java对象生命周期1.创建阶段在创建阶段,JVM会首先为对象分配内存存储空间,然后开始构造对象。

Java对象生命周期详解|零基础Java入门精通

Java底层是由JVM来运行的,Java中的对象从创建初始化到最后停止使用、被销毁是有一个完整生命周期的,其中包括的七个阶段分别是创建、应用、不可见、不可达、回收、终止和对象重新分配内存空间。本小节将对Java对象生命周期的各个阶段进行介绍。

图10.6.1 Java对象生命周期

1.创建阶段

在创建阶段,JVM会首先为对象分配内存存储空间,然后开始构造对象。首先会依次从父类到子类对static修饰的静态成员进行初始化,然后依次对其他成员变量进行初始化,递归调用父类的构造方法。一旦对象创建后就可以被访问,即进入了应用阶段。

2.应用阶段

应用阶段中,对象至少被一个强引用持有,持续占用JVM内存资源。

3.不可见阶段

当程序超出了对象的实际作用域时,对象处于不可见阶段,此时程序不再持有对象的任何强引用,但是对象的引用在内存中仍然存在,即对象内存冗余,可能会影响系统性能。一般会在对象引用完后,显式地将对象引用赋值为null,这时对象会进入不可达阶段。(www.xing528.com)

4.不可达阶段

当JVM内存中不再有任何引用指向对象时,对象进入不可达阶段,这类对象会被Java GC垃圾回收机制回收。

5.回收阶段

当不可达阶段的对象被GC识别到时,对象会进入回收阶段。一般对象都继承了Object类,定义了finalize()方法,因此会执行该方法并释放内存。

6.终止阶段

当对象执行了finalize()方法后仍处于不可达阶段时,对象会进入终止阶段,等待GC进行垃圾回收。

7.对象重新分配内存空间阶段

对象重新分配内存空间阶段是垃圾回收的最后一步,经过前面回收和终止阶段的对象如果仍处于不可达阶段,就会进入最后一步。但是,最终对象内存何时被回收仍取决于JVM本身的调度。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈