0

jvmコマンドを使用すると実行できるアプリケーションがあります-Xmx65m。正常に動作していますが、アプリケーションに必要な機能がいくつかあるため、アプリケーションがより多くのメモリを消費できるようにしたいと思います。問題は、-Xmxオプションを増やすと、JVMが65 MBで処理できる機能を実行するために、より多くのメモリを割り当てることです。

オプションが不足していて、OutOfMemoryErrorをスローしようとしている場合にのみ、SOに追加のメモリを要求するようにJVMを構成することは可能ですか?

4

3 に答える 3

3

最小、最大メモリ設定を追加してください。これにより、JVMは必要最小限のメモリで開始し、必要に応じてより多くのメモリを割り当て続けることができます。

-Xms65m -Xmx512m

お役に立てれば。

于 2012-10-22T11:29:55.083 に答える
2

JVMは、起動時に仮想メモリとして最大ヒープサイズを予約しますが、必要な量だけを使用します(最小サイズを設定しても、それほど多くは使用しない場合があります)大量のメモリを使用するが、それを必要としない場合これ以上OSに還元できます(ただし、多くの場合、AFAIKにはなりません)

最大値が非常に小さいため、段階的な増加は見られない可能性があります。最大で試して、最大ヒープサイズがどのように大きくなるかを-mx1g調べてください。jvisualvm

于 2012-10-22T11:28:05.037 に答える
1

オプションが不足していて、OutOfMemoryErrorをスローしようとしている場合にのみ、SOに追加のメモリを要求するようにJVMを構成することは可能ですか?

JVMが最終的にスペースを使い果たしそうになると、GCはますます頻繁に実行され、アプリケーションのスループット(CPU秒あたりに実行される有用な作業の観点から)は劇的に低下します。あなたがそれを避けることができれば、あなたはそれが起こることを望まないでしょう。

JVMがヒープを増大させないようにするために使用できるGCチューニングオプションが1つあります。この-XX:MinHeapFreeRatioオプションは、「拡張を回避するために、GC後のヒープフリーの最小パーセンテージ」を設定します。これをデフォルト値の40%から(たとえば)20%に減らすと、GCはヒープを拡張する意欲が低下します。

欠点は、を減らす-XX:MinHeapFreeRatioと、JVM全体がガベージコレクターの実行に多くの時間を費やすことになります。行き過ぎてしまうと、影響がかなり深刻になる可能性があります。(個人的には、この設定を変更することはお勧めしません...)

于 2012-10-22T13:47:41.483 に答える