回答:
引数を使用します-Xms<memory>
-Xmx<memory>
。使用M
又はG
それぞれバイトのメグスとライブを示す数字の後。-Xms
最小値と-Xmx
最大値を示します。
-Xmx524M
と1.2 GBのRAMが消費されます。(?)
スタックがメモリをリークすることを心配する必要はありません(非常にまれです)。スタックが制御不能になる唯一の時間は、無限(または本当に深い)再帰です。
これは単なるヒープです。最初は質問を完全に読みませんでした。
次のコマンドライン引数を指定してJVMを実行する必要があります。
-Xmx<ammount of memory>
例:
-Xmx1024m
これにより、JVMに最大1GBのメモリが割り当てられます。
-XX:MaxDirectMemorySize
。私が確認するために厳重にプロファイリングしたわけではありませんが、;)
MaxDirectMemorySize
影響を受けるのはNIOバッファーのみです。他のあらゆる種類のネイティブメモリがJVMによって使用されます。
(ヒープサイズではなく)jvmのメモリを制限する場合は、ulimit -v
jvmとヒープメモリの違いを理解するには、この優れた記事http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-をご覧ください。 java-process.html
ulimit
Linuxのコマンド?私はグーグルですばやく検索しましたがulimit
、JVM との間に関係はありませんでした。Y
上記の答えはちょっと正しいです。Javaプロセスが割り当てるネイティブメモリの量を適切に制御することはできません。それはあなたのアプリケーションが何をしているかに依存します。
とはいえ、プラットフォームによっては、Javaまたはその他のプロセスのサイズを制限するために、たとえばulimitなどのメカニズムを使用できる場合があります。
その制限に達した場合に正常に失敗することを期待しないでください。ネイティブメモリの割り当てエラーは、Javaヒープの割り当てエラーよりも処理がはるかに困難です。アプリケーションがクラッシュする可能性はかなり高くなりますが、プロセスサイズを抑えることがシステムにとってどれほど重要であるかによっては、依然として適切である可能性があります。
NativeHeapは、-XX:MaxDirectMemorySize = 256M(デフォルトは128)ずつ増やすことができます。
使ったことがない。多分あなたはそれが役に立つでしょう。