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本身的调度。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。