✅类的生命周期是怎么样的?

典型回答

一个类从诞生到卸载,大体分为如下几步:

1669822742133-ad82c487-cc18-4bd2-96c4-8555ce3f8d79.png

大的阶段可以分为类的加载、类的使用、以及类的卸载。

其中类的加载阶段又分为加载、链接、初始化。其中连接过程又包含了验证、准备和解析。

加载阶段

Java中类加载的过程是怎么样的?

类使用过程

类的使用,即是类在加载完毕后,会有代码段来引用该类,如初始化该类的对象,或者通过反射获取该类的元数据。

类卸载过程

假如说该类满足下面2个条件:

  1. 该类所有的实例都已被GC回收。
  2. 该类的ClassLoader已经被GC回收。

那么该类会在FULLGC期间从方法区被回收掉。

这个时候,我们需要明白一个问题,我们知道,JVM自带的类加载器因为需要一直加载基础对象,所以JDK自带的基础类是一定不会被回收掉的,那么会有哪些类会被回收掉呢?

答案就是那些自定义类加载器一些场景的类会被回收掉,如tomcat,SPI,JSP等临时类,是存活不久的,所以需要来不断回收

原文: https://www.yuque.com/hollis666/xkm7k3/txysbi