JVMが使用する最大メモリを制限したい。これは単なるヒープではなく、このプロセスが使用する合計メモリを制限したいことに注意してください。
引数-Xms<memory>
-Xmx<memory>
を使用します。バイトのMegsとGigsをそれぞれ示すために、数値の後にM
またはG
を使用します。 -Xms
は最小値を示し、-Xmx
は最大値を示します。
スタックリークメモリについて心配する必要はありません(非常にまれです)。スタックを制御不能にできるのは、無限(または非常に深い)再帰を使用する場合のみです。
これは単なるヒープです。最初は質問を完全に読んでいませんでした。
次のコマンドライン引数を使用してJVMを実行する必要があります。
-Xmx<ammount of memory>
例:
-Xmx1024m
これにより、JVMに最大1GBのメモリが許可されます。
Jvmのメモリを制限する場合(ヒープサイズではない)ulimit -v
Jvmとヒープメモリの違いを理解するには、この優れた記事をご覧ください http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at- sizing-the-Java-process.html
上記の答えは一種の正しいものです。Javaプロセスが割り当てるネイティブメモリの量を適切に制御することはできません。それはあなたのアプリケーションが何をしているかに依存します。
ただし、プラットフォームによっては、ulimitなどの何らかのメカニズムを使用して、Javaまたはその他のプロセスのサイズを制限できる場合があります。
制限に達しても正常に失敗するとは思わないでください。ネイティブメモリの割り当てエラーは、Javaヒープの割り当てエラーよりも処理がはるかに困難です。アプリケーションがクラッシュする可能性はかなり高いですが、プロセスサイズを小さく保つことがシステムにとってどれほど重要かによっては、それがまだあなたに合っている可能性があります。
NativeHeapは、-XX:MaxDirectMemorySize = 256Mで増やすことができます(デフォルトは128)
私はそれを使ったことがない。たぶん便利でしょう。