0

アプリケーション内で使用されているメモリを追跡するために、いくつかの監視コードを作成しています。メモリ使用量を調査できる MemoryMXBean を見つけました。しかし、ドキュメントから、最大値を実際に把握することはできません:

max : メモリ管理に使用できるメモリの最大量 (バイト単位) を表します。その値は未定義の場合があります。メモリの最大量は、定義されている場合、時間の経過とともに変化する可能性があります。

最大値が null になる可能性があるのはどのような状況ですか? 起動時に明示的に設定しなくても、常に設定されると思いました。また、設定した場合、最大値は時間の経過とともにどのように変化しますか? 関連するスレッドがいくつかありますが、問題に対する回答はありません。

誰かが暗闇に光をもたらすことができますか?

4

1 に答える 1

1

最大メモリ使用量がいつ null になるかはわかりませんが、時間の経過とともにどのように変化するかはわかります。max 値は、プログラムがその存続期間中にこれまでに使用した最大メモリを表し、XmxJVM 引数によって上限が設定されます。

したがって、プログラムが (Xmxたとえば 1g で) 開始されると、最大値は 256m になる可能性があります。プログラムが実行されてより多くのメモリが必要になると、JVM はより多くのメモリをプロビジョニングし、最大値は 512m まで増加します。プログラムの処理が完了し、必要なメモリが減少すると、GC が起動してメモリを再利用します。しかし、最大は512mのままです。

Xmx最大値が引数で指定された値を超えることはありません。制限 (この場合は 1g) に達すると、プログラムの実行が終了するまでその値のままになります。

于 2012-10-01T09:52:02.390 に答える