Java類載入和解除安裝的跟蹤
阿新 • • 發佈:2019-02-20
什麼是類的載入和解除安裝
Java程式的執行離不開類的載入,為了更好地理解程式的執行,有時候需要知道系統載入了哪些類。一
為什麼要跟蹤
般情況下,系統載入的類存在於檔案系統中,以jar檔案或者class檔案的形式存在,可以直接在通過檔案系統檢視。但是在動態代理、AOP等程式設計過程中國,系統會在執行過程中動態地生成某些類,這些類相對比較隱蔽,無法通過檔案系統找到,為此,虛擬機器提供了類的載入|解除安裝跟蹤引數來幫助我們進行程式的除錯。
如何跟蹤
使用下面的引數來同時跟蹤類的載入和解除安裝
-verbose:class
也可以單獨使用下面引數來跟蹤類的載入
-XX :+TraceClassLoading
也可以單獨使用下面引數來跟蹤類的解除安裝
-XX:+TraceClassUnloading
程式碼來幫忙
下面的程式是一個java的反射的例子,執行這個程式時,使用-verbose:class引數來跟蹤類的載入和解除安裝
public class SpyUnloadClass {
public static void main(String[] args) {
Class<?> demo1 = null;
Class<?> demo2= null;
Class<?> demo3 = null ;
try {
// 一般儘量採用這種形式
demo1 = Class.forName("PartionOnStack");
} catch (Exception e) {
e.printStackTrace();
}
demo2 = new PartionOnStack().getClass();
demo3 = PartionOnStack.class;
System.out.println("類名稱 " + demo1.getName());
System.out.println("類名稱 " + demo2.getName());
System.out.println("類名稱 " + demo3.getName());
}
}
執行結果如下圖所示:
JDK工具的使用
Java虛擬允許程式猿在執行程式時列印和檢視系統中的類的分佈情況,在系統啟動時加引數
-XX:+PrintClassHistogram
然後在java的控制檯下按下Ctrl+Break(鍵盤右上角)組合鍵,控制檯就會顯示當前類的資訊