現在利用可能なものではなく、プログラムの JVM が呼び出された最大 permgen と最大ヒープ サイズをプログラムで調べようとしています。
それを行う方法はありますか?
私は Java ランタイム オブジェクトのメソッドに精通していますが、それらが実際に何を提供するのかは明確ではありません。
あるいは、これら 2 つに割り当てられた量を Eclipse に尋ねる方法はありますか?
現在利用可能なものではなく、プログラムの JVM が呼び出された最大 permgen と最大ヒープ サイズをプログラムで調べようとしています。
それを行う方法はありますか?
私は Java ランタイム オブジェクトのメソッドに精通していますが、それらが実際に何を提供するのかは明確ではありません。
あるいは、これら 2 つに割り当てられた量を Eclipse に尋ねる方法はありますか?
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 を使用することもできます。
これを試してください:
MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
mem.getHeapMemoryUsage().getUsed();
mem.getNonHeapMemoryUsage().getUsed();
ただし、これらはスナップショットデータのみを提供し、累積値は提供しません。
Eclipseについては、プロファイリングツールを探してみてください。NetBeansにはデフォルトで1つあると思います。