HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

java.lang.management パッケージ - ClassLoadingMXBean インタフェース

ManagementFactory クラスを介して取得できるMXBeanの一つが実装するインタフェース。

クラスのロード数を取得するメソッドと、クラスロードの状況をコンソールに出力するかどうかを設定するメソッドを持つ。
実際に試してみる。

import java.lang.management.ClassLoadingMXBean;
import java.lang.management.ManagementFactory;

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        ClassLoadingMXBean classLoadingMXBean = ManagementFactory.getClassLoadingMXBean();
        System.out.println("isVerbose: " + classLoadingMXBean.isVerbose());
        classLoadingMXBean.setVerbose(true);
        System.out.println("loadedClassCount: " + classLoadingMXBean.getLoadedClassCount());
        System.out.println("totalLoadedClassCount: " + classLoadingMXBean.getTotalLoadedClassCount());
        System.out.println("unloadedClassCount: " + classLoadingMXBean.getUnloadedClassCount());
        try {
            Class.forName("Hoge");
        } catch (ClassNotFoundException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
        }
        System.out.println("loadedClassCount: " + classLoadingMXBean.getLoadedClassCount());
        System.out.println("totalLoadedClassCount: " + classLoadingMXBean.getTotalLoadedClassCount());
        System.out.println("unloadedClassCount: " + classLoadingMXBean.getUnloadedClassCount());
    }

}

このコードの中で出てくるクラス"Hoge"は特にフィールドもメソッドも持たない空のクラス。

public class Hoge {
}

で、これを実行した結果。

isVerbose: false
loadedClassCount: 319
totalLoadedClassCount: 319
unloadedClassCount: 0
[Loaded Hoge from file:/C:/eclipse/sandbox/java5/classes/]
loadedClassCount: 320
totalLoadedClassCount: 320
unloadedClassCount: 0
[Loaded java.lang.Shutdown from shared objects file]
[Loaded java.lang.Shutdown$Lock from shared objects file]

クラス"Hoge"をロードしたとき(Class#forName()メソッドを呼んだとき)に、トレースが出力されている。