如何判斷一個常量是廢棄常量,如何判斷一個類是無用的類

類須要同時知足下面3個條件才能算是 「無用的類」 :java

1.該類全部的實例都已經被回收,也就是 Java 堆中不存在該類的任何實例。對象

2.加載該類的 ClassLoader 已經被回收。內存

3.該類對應的 java.lang.Class 對象沒有在任何地方被引用,沒法在任何地方經過反射訪問該類的方法。字符串

 

如何判斷一個常量是廢棄常量:引用

運行時常量池主要回收的是廢棄的常量。那麼,咱們如何判斷一個常量是廢棄常量呢?反射

假如在常量池中存在字符串"abc" ,若是當前沒有任何String對象引用該字符串常量的話,就說明常量"abc"就是廢棄常量,若是這時發生內存回收的話並且有必要的話," abc"就會被系統清理出常量池。方法

注意:咱們在多是把Java內存區域講的最清楚的一篇文章也講了JDK1.7及以後版本的JVM已經將運行時常量池從方法區中移了出來,在Java堆(Heap) 開闢了一塊區域存放運行時常池字符

相關文章
相關標籤/搜索