java中的.class文件的生存周期是怎样的(即类加载到类释放的过程)

目录

1、一个类的生命周期

2、主动引用和被动引用

3、什么时候类(.class)被释放?


1、一个类的生命周期

字节码文件(.calss文件)从被JVM开始执行到释放,需要经历如下过程:

一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况,如图所示:

java的类加载后且当使用阶段完成之后,java类就进入了卸载阶段,也就是所谓的释放zhi。


2、主动引用和被动引用

被使用一般分为两种情况:

关于主动引用和被动引用,参考文章。

  • 主动引用:类会被初始化;
  • 被动引用:类不会被初始化。

3、什么时候类(.class)被释放?

关于类的卸载,在类使用完之后,如果满足下面的情况,类就会被卸载:

  • 不存在实例了。该类所有的实例都已经被回收,也就是java堆中不存在该类的任何实例。
  • 对应类加载器被回收。加载该类的ClassLoader已经被回收。
  • 该类的.Class没有再被引用。该类对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法。

如果以上三个条件全部满足,jvm就会在方法区垃圾回收的时候对类进行卸载,类的卸载过程其实就是在方法区中清空类信息,java类的整个生命周期就结束了。

猜你喜欢

转载自blog.csdn.net/Longtermevolution/article/details/107855823
今日推荐