7

現在利用可能なものではなく、プログラムの JVM が呼び出された最大 permgen と最大ヒープ サイズをプログラムで調べようとしています。

それを行う方法はありますか?

私は Java ランタイム オブジェクトのメソッドに精通していますが、それらが実際に何を提供するのかは明確ではありません。

あるいは、これら 2 つに割り当てられた量を Eclipse に尋ねる方法はありますか?

4

3 に答える 3

8

max perm gen については、次のようにしてみてください。

public static long getPermGenMax() {
    for (MemoryPoolMXBean mx : ManagementFactory.getMemoryPoolMXBeans()) {
        if ("Perm Gen".equals(mx.getName())) {
            return mx.getUsage().getMax();
        }
    }
    throw new RuntimeException("Perm gen not found");
}

最大ヒープの場合、これはランタイムから取得できますが、適切な MemoryPoolMXBean を使用することもできます。

于 2009-01-12T00:11:15.977 に答える
7

これを試してください:

MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
mem.getHeapMemoryUsage().getUsed();
mem.getNonHeapMemoryUsage().getUsed();

ただし、これらはスナップショットデータのみを提供し、累積値は提供しません。

于 2009-01-11T19:23:35.247 に答える
0

Eclipseについては、プロファイリングツールを探してみてください。NetBeansにはデフォルトで1つあると思います。

于 2009-01-11T19:26:02.213 に答える