3

私は奇妙な問題を経験していました。複数のJVMを実行していて、それらのメモリ使用量の詳細を取得する必要があります。詳細を取得しRuntime.getFreeMemory()てjconsoleの出力と比較すると、大きな違いがあります。何が問題なのか?Runtime.getFreeMemory()またはを使用すると、間違った詳細が表示されます

ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax() - ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();

何が問題なのか?どんな提案/コメントも大歓迎です。

ありがとう

4

1 に答える 1

0

Runtime.getFreeMemory()は、割り当てられたものから取り残されたメモリの量を示します。それはRuntime.totalMemory()- 現在使用されているメモリです。 Runtime.maxMemory()は、JVM が割り当てることができると指定した合計メモリです ( -Xmx)。以上になる場合がありRuntime.totalMemory()ます。おそらく、最大メモリと jconsole で使用されるメモリの違いを見ているでしょう。これをテストするには、( -Xms) を ( ) と同じに設定してみてください-Xmx。これにより、JVM は開始時に最大メモリを割り当てます。

于 2012-10-01T18:30:03.310 に答える