天天看點

回收方法區

​ 主要回收兩部分内容:​

​廢棄的常量​

​​和​

​無用的類​

​。

回收廢棄常量:與回收Java堆中的對象非常類似。以常量池中字面量的回收為例,假如一個字元串"abc"已經進入了常量池中,但是目前系統沒有任何一個String對象是叫做"abc"的,換句話說,就是沒有任何String對象引用常量池中的"abc"常量,也沒有其他地方引用了這個字面量,如果這時發生記憶體回收,而且必要的話,這個"abc"常量就會被系統清理出常量池。常量池中的其他類(接口)、方法、字段的符号引用也與此類似。

無用的類:

  1. 該類所有的執行個體都已經被回收,也就是Java堆中不存在該類的任何執行個體。
  2. 加載該類的ClassLoader已經被回收。
  3. 該類對應的java.lang.Class對象沒有在任何地方被引用,無法在任何地方通過反射通路該類的方法。