在JVM运行空间中,对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。上面的这7个阶段,构成了 JVM中对象的完整的生命周期。
创建阶段
在对象创建阶段,系统要通过下面的步骤,完成对象的创建过程:
(1)为对象分配存储空间。
(2)开始构造对象。
(3)递归调用其超类的构造方法。
(4)进行对象实例初始化与变量初始化。
(5)执行构造方法体。
应用阶段
当对象的创建阶段结束之后,该对象通常就会进入对象的应用阶段。这个阶段是对象得以表现自身能力的阶段。也就是说对象的应用阶段是对象整个生命周期中证明自身“存在价值”的时期。在对象的应用阶段,对象具备下列特征:
◆系统至少维护着对象的一个强引用(Strong Reference);
◆所有对该对象的引用全部是强引用(除非我们显式地使用了:软引用(Soft Reference)、弱引用(Weak Reference)或虚引用(Phantom Reference))。
不可视阶段
在一个对象经历了应用阶段之后,那么该对象便处于不可视阶段,说明我们在其他区域的代码中已经不可以再引用它,其强引用已经消失,例如,本地变量超出了其可视范围,
不可到达阶段
处于不可到达阶段的对象,在虚拟机所管理的对象引用根集合中再也找不到直接或间接的强引用,这些对象通常是指所有线程栈中的临时变量,所有已装载的类的静态变量或者对本地代码接口(JNI)的引用。这些对象都是要被垃圾回收器回收的预备对象,但此时该对象并不能被垃圾回收器直接回收。其实所有垃圾回收算法所面临的问题是相同的——找出由分配器分配的,但是用户程序不可到达的内存块。
可收集阶段、终结阶段与释放阶段
对象生命周期的最后一个阶段是可收集阶段、终结阶段与释放阶段。当对象处于这个阶段的时候,可能处于下面三种情况:
(1)垃圾回收器发现该对象已经不可到达。
(2)finalize方法已经被执行。
(3)对象空间已被重用。
当对象处于上面的三种情况时,该对象就处于可收集阶段、终结阶段与释放阶段了。虚拟机就可以直接将该对象回收了。
http://developer.51cto.com/art/201001/176550.htm
http://blog.csdn.net/chiperfect/article/details/6314591
分享到:
相关推荐
java对象的生命周期,讲得很详细,很好的东东哦
Java中对象的生命周期 自己总结 Java中对象的生命周期 private构造方法
——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!
主要介绍了Java对象在JVM中的生命周期详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java对象的生命周期[参照].pdf
Hibernate持久化对象的生命周期 持久化对象的状态: 瞬时对象(Transient Objects)持久化...Java对象在JVM中的生命周期 理解Session的缓存 在Hibernate应用中Java对象的状态 Session的保存、更新、删除、查询方法:
要理解java对象的生命周期,我们需要要明白两个问题, 1、java是怎么分配内存的 ,2、java是怎么回收内存的。 喜欢java的人,往往因为它的内存自动管理机制,不喜欢java的人,往往也是因为它的内存自动管理...
T21.4_持久化对象生命周期 java 经典教程 经典教材
关于JVM中对象的生命周期的讲解,不错!!
全书内容包括面向对象的编程思想、Java语言的基础知识、异常处理、类与对象的生命周期、多线程、Java集合、输入/输出和GUI编程等。其最大特色是以六条主线贯穿全书:面向对象编程思想、Java语言的语法、Java虚拟机...
对象的生命周期,这是孙卫琴书中的单独的一章!将的挺不错的!可以参考一下!!
2022年CORBA对象生命周期之实现和内存管理Java教程.docx
主要介绍了Java 详解垃圾回收与对象生命周期的相关资料,这里对堆内存与栈内存进行详解及JVM 的生命周期介绍,需要的朋友可以参考下
本文详细讲述了一个java类自调入内存至被卸载的整个声明周期,对理解对象的生命周期,jvm中的类加载等内容有所帮助。
而java类的生命周期是其字节码文件装载、连接、初始化、使用、和卸载的整个过程。 ● 装载。 jvm找到需要装载的类,将类的信息装载到jvm的方法区中。然后在堆区实例化一个java.lang.Class对象,作为方法...
主要讲解java对象在内存中的结构,以及生命周期!对有一定java基础的童鞋很有帮助! 大家下载吧!
Java对象实体类属性字段对比变化过程是指在一个Java对象实体类的生命周期中,其属性字段的变化情况。这种变化过程通常涉及到对象的创建、使用和销毁等阶段。 在对象的创建阶段,Java对象实体类会根据预设的属性字段...
本书内容包括:面向对象的编程思想、Java语言的基础知识、异常处理、类与对象的生命周期、多线程、Java集合、泛型、Annotation标注、输入/输出和GUI编程,以及JDK8引入的如虎添翼的新特征,比如支持函数式编程的...
全书内容包括面向对象的编程思想、Java语言的基础知识、异常处理、类与对象的生命周期、多线程、Java集合、输入/输出和GUI编程等。其最大特色是以六条主线贯穿全书:面向对象编程思想、Java语言的语法、Java虚拟机...