Java 对象的生命周期
Java虚拟机(JVM)是一种能够在不同平台上运行Java程序的虚拟机。在JVM中,每个对象都有其自己的生命周期。本篇博客将介绍JVM对象的生命周期。
生命周期阶段
Java 对象的生命周期的几个阶段,分别为:对象的创建、使用、回收、销毁,下边逐个来进行介绍;
对象的创建
当使用new关键字创建一个对象时,JVM会先检查类是否已经被加载和链接过。如果没有加载,则先进行类的加载和连接操作。然后为该对象分配内存空间,并对分配到的内存空间进行清零赋值,即初始化对象的所有实例变量为默认值。
接着,JVM会调用对象的构造函数(Constructor),初始化对象的实例变量。如果该类没有显式地定义构造函数,则JVM会提供一个默认的无参构造函数。
最后,JVM会把对象的引用返回给程序员,以便程序员可以通过该引用来操作该对象。
对象的使用
在对象创建后,程序员可以通过对象的引用对它进行操作。对象在内存中的位置由对象的引用来确定。当一个对象被使用时,它可能会被传递给其他方法或者被保存在某些数据结构中。
对象的回收
当一个对象不再被程序员所引用时,该对象就成了垃圾(Garbage)。JVM需要将这些无用的对象从内存中清除,以便后面的内存分配可以使用这些空间。
JVM中的垃圾回收(Garbage Collection)机制负责回收这些无用对象。当JVM检测到一个对象已经成为垃圾时,它就会自动地将该对象所占用的内存空间释放出来,以便程序后续的内存分配可以使用这些空间。
在JVM中,垃圾回收是由垃圾回收器(Garbage Collector)来完成的。不同的垃圾回收器采用不同的算法来实现垃圾回收。常见的垃圾回收算法包括标记-清除算法、复制算法、标记-整理算法和分代收集算法等。
对象的销毁
当一个对象被回收后,JVM并不会立即销毁它。相反,JVM会等待垃圾回收器对内存进行整理后,再对垃圾对象进行销毁。销毁一个对象的最终步骤是调用其finalize()方法。该方法是Object类中定义的一个方法,在GC进行回收之前会先调用该方法。
在Java 9之后,finalize()方法已经被废弃,取而代之的是使用Cleaner API进行资源管理。
总结
JVM对象的生命周期包括对象的创建、使用、回收和销毁等阶段。理解JVM对象的生命周期对于Java程序开发人员来说是非常重要的,可以帮助他们更好地管理内存资源,提高程序性能。
- 标题: Java 对象的生命周期
- 作者: Heer Liu
- 创建于: 2020-06-02 18:55:10
- 链接: https://blog.heer.love/posts/dcb2c325/
- 版权声明 : 本文章采用 CC BY-NC-SA 4.0 进行许可。