一个类从诞生到卸载,大体分为如下几步:
大的阶段可以分为类的加载、类的使用、以及类的卸载。
其中类的加载阶段又分为加载、链接、初始化。其中连接过程又包含了验证、准备和解析。
类的使用,即是类在加载完毕后,会有代码段来引用该类,如初始化该类的对象,或者通过反射获取该类的元数据。
假如说该类满足下面2个条件:
那么该类会在FULLGC期间从方法区被回收掉。
这个时候,我们需要明白一个问题,我们知道,JVM自带的类加载器因为需要一直加载基础对象,所以JDK自带的基础类是一定不会被回收掉的,那么会有哪些类会被回收掉呢?
答案就是那些自定义类加载器一些场景的类会被回收掉,如tomcat,SPI,JSP等临时类,是存活不久的,所以需要来不断回收