在Java中,对象的生命周期包含下面几个阶段:
-
创建阶段(Created)
-
应用阶段(In Use)
-
不可见阶段(Invisible)
-
不可达阶段(Unreachable)
-
收集阶段(Collected)
-
终结阶段(Finalized)
-
对象空间重分配阶段(De-allocated)
1.创建阶段(Created)
在创建阶段系统通过以下的几个步骤来完毕对象的创建过程
为对象分配存储空间
开始构造对象
2.应用阶段(In Use)
对象至少被一个强引用持有着。
3.不可见阶段(Invisible)
当一个对象处于不可见阶段时,说明程序本身不再持有该对象的不论什么强引用,尽管该这些引用仍然是存在着的。
简单说就是程序的运行已经超出了该对象的作用域了。
4.不可达阶段(Unreachable)
对象处于不可达阶段是指该对象不再被不论什么强引用所持有。
5.收集阶段(Collected)
当垃圾回收器发现该对象已经处于“不可达阶段”而且垃圾回收器已经对该对象的内存空间又一次分配做好准备时,则对象进入了“收集阶段”。假设该对象已经重写了finalize()方法,则会去运行该方法的终端操作。
这里要特别说明一下:不要重载finazlie()方法!原因有两点:
会影响JVM的对象分配与回收速度