2015-02-10 25 views
0

當我使用VM參數「-verbose:class」時,它顯示了所有正在加載的類,除了那些既是Java固有的也是本地聲明的類,如基元或數組(儘管如此,在那兒?)。爲什麼java的-verbose:class參數不包含jre固有的本機類?

儘管採用的主要方法中的以下代碼行,你看不到根據詳細的輸出

int[] o = new int[0];

這種類型的裝載有沒有一種方法,使這成爲可能通過其他方式?

+1

從不加載原始數組類,它們只是在虛擬機啓動時創建:[source](http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/0499e4a89c76/src/share/vm /memory/universe.cpp#l259)。爲什麼你永遠不會看到他們在日誌中? – apangin 2015-02-10 18:13:52

回答

1

這些clasess是使用優化的代碼路徑預加載的,它避開了幾乎所有的標準類加載機制和驗證。這就是爲什麼你沒有看到它們。基本上,人們無法將這種類別的加載區分爲單獨的事件;它們是從預緩存的映像中批量加載的。

相關問題