方法区(在HotSpot中的永久代)的垃圾收集主要分两部分:废弃常量和无用的类
1. 废弃常量
没有任何地方引用一个常量如字符串的字面量,类(接口)及方法字段的符号引用。比如没有任何String 对象引用常量池中的"abc" ,这个"abc" 常量就会被系统清理出常量池。
2. 无用的类
满足以下三个条件的类才会被判定为是无用类:
该类的所有实例都已经被回收,Java堆中不存在该类的任何实例;
加载该类的ClassLoader已经被回收;
该类对应的java.lang.Class 对象没有在任何地方被引用,无法再任何地方通过反射访问该类的方法。