web-dev-qa-db-ja.com

JVMの最大メモリ使用量を設定する方法は?

JVMが使用する最大メモリを制限したい。これは単なるヒープではなく、このプロセスが使用する合計メモリを制限したいことに注意してください。

116
erotsppa

引数-Xms<memory>-Xmx<memory>を使用します。バイトのMegsとGigsをそれぞれ示すために、数値の後にMまたはGを使用します。 -Xmsは最小値を示し、-Xmxは最大値を示します。

94
Prabhu R

スタックリークメモリについて心配する必要はありません(非常にまれです)。スタックを制御不能にできるのは、無限(または非常に深い)再帰を使用する場合のみです。

これは単なるヒープです。最初は質問を完全に読んでいませんでした。

次のコマンドライン引数を使用してJVMを実行する必要があります。

-Xmx<ammount of memory>

例:

-Xmx1024m

これにより、JVMに最大1GBのメモリが許可されます。

28
jjnguy

Jvmのメモリを制限する場合(ヒープサイズではない)ulimit -v

Jvmとヒープメモリの違いを理解するには、この優れた記事をご覧ください http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at- sizing-the-Java-process.html

13
vsingh

上記の答えは一種の正しいものです。Javaプロセスが割り当てるネイティブメモリの量を適切に制御することはできません。それはあなたのアプリケーションが何をしているかに依存します。

ただし、プラットフォームによっては、ulimitなどの何らかのメカニズムを使用して、Javaまたはその他のプロセスのサイズを制限できる場合があります。

制限に達しても正常に失敗するとは思わないでください。ネイティブメモリの割り当てエラーは、Javaヒープの割り当てエラーよりも処理がはるかに困難です。アプリケーションがクラッシュする可能性はかなり高いですが、プロセスサイズを小さく保つことがシステムにとってどれほど重要かによっては、それがまだあなたに合っている可能性があります。

10
SmoothieMonster

NativeHeapは、-XX:MaxDirectMemorySize = 256Mで増やすことができます(デフォルトは128)

私はそれを使ったことがない。たぶん便利でしょう。

0
AfisBoy