方法區的垃圾收集
主要回收兩部分內容廢棄的常量和不再使用的類型
廢棄的常量:
假如一個字符串“java”曾經進入常量池中,但是當前系統又沒有任何一個字符串對象的值是“java”,換句話說,已經沒有任何字符串對象引用常量池中的“java”常量,且虛擬機中也沒有其他地方引用這個字面量。如果在這時發生內存回收,而且垃圾收集器判斷確有必要的話,這個“java”常量就將會被系統清理出常量池。常量池中其他類(接口)、方法、字段的符號引用也與此類似。
不再使用的類型:
1、該類所有的實例都已經被回收,也就是Java堆中不存在該類及其任何派生子類的實例。
2、加載該類的類加載器已經被回收。
3、該類對應的java.lang.Class對象沒有在任何地方被引用,無法在任何地方通過反射訪問該類的方法。