永久代的垃圾收集主要回收两部分内容:废弃常量和无用的类。
1、废弃的常量
假如一个字符串已经进入常量池,若当前系统中没有任何一个String对象,也就是没有任何String对象引用该常量,并且在其他地方也没有引用这个字面量,那么它就可以被回收。
2、无用的类
无用的类需要同时满足以下三个条件:
①Java堆中不存在该类的任何实例
②加载该类的ClassLoader已被回收
③该类对应的Class对象没有在任何地方被引用,无法在任何地方通过反射调用该类的方法。