5

-Xms256M および -Xmx512M を使用して JVM を開始した場合、いつでも、ヒープの若い世代と旧世代に割り当てられたスペースの量を特定できますか?

4

2 に答える 2

8

私はあなたがこれをプログラムで決定することを意味していると思います。を覗いてみてjava.lang.managementください。特に、ManagementFactory.getMemoryPoolMXBeansここで役立つはずです。

final List<MemoryPoolMXBeans> pools = ManagementFactory.getMemoryPoolMXBeans();
for (final MemoryPoolMXBean pool : pools) {
  if (pool.getType() == MemoryType.HEAP) {
    final String name = pool.getName();
    final MemoryUsage usage = pool.getUsage();
    if (name.startsWith("Eden")) {
      System.out.println("found eden: " + usage);
    } else if (name.startsWith("Tenured")) {
      System.out.println("found tenured: " + usage);
    }
  }
}

これは、HotSpotJVMを使用して機能するはずです。

これをプログラムで実行する必要がない場合は、 VisualVMjvisualvmJDK内)を使用すると、他の多くの気の利いたものの中でヒープの使用状況を監視できます。


(ソース:java.net

ただし、VisualVMには、すぐに使用できる特定のメモリプールの監視がサポートされていないことに注意してください。jvmstatをインストールする必要があります。次に、VisualVMのプラグインマネージャーからVisualGCプラグインをインストールする必要があります。

http://puu.sh/YCpX

Visual VMをインストールして再起動すると、[VisualGC]タブでヒープ使用量のより詳細なビューを確認できます。

http://puu.sh/YCqD

于 2012-08-25T07:47:48.770 に答える
1

JConsoleを使用すると、ヒープサイズを簡単に監視できます。[メモリ]タブでさまざまな世代のサイズを確認できます。チャートドロップダウンから目的の世代を選択します。

于 2012-08-25T07:46:40.277 に答える