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


回答:


94

引数を使用します-Xms<memory> -Xmx<memory>。使用M又はGそれぞれバイトのメグスとライブを示す数字の後。-Xms最小値と-Xmx最大値を示します。


1
MaxPermSizeも確認する必要があります。
urmalp

89
彼はJVMメモリについて尋ねています。あなたが言ったことはヒープサイズです。どちらも違います
vsingh 2013年

8
他のコメントの内容を繰り返すために、XmsとXmxはヒープのみを構成します。これらの変数の構成は非ヒープ領域に間接的に影響しますが、質問をする人は、合計メモリ使用量(ヒープ+非ヒープ)を構成する方法があるかどうかを確立しようとしています
murungu

2
うふ。そのため、設定する-Xmx524Mと1.2 GBのRAMが消費されます。(?)
phil294

7
これは正解ではありません。-Xmsおよび-Xmxオプションは、jvmヒープサイズのみを調整し、合計メモリ割り当ては調整しません。
Peter De Winter、

31

スタックがメモリをリークすることを心配する必要はありません(非常にまれです)。スタックが制御不能になる唯一の時間は、無限(または本当に深い)再帰です。

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

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

-Xmx<ammount of memory>

例:

-Xmx1024m

これにより、JVMに最大1GBのメモリが割り当てられます。


1
つまり、このスレッドによると、事実ではない、あなたはヒープの外部に漏洩することができ、複数の方法がありますstackoverflow.com/questions/1475290/...
erotsppa

正解です。スタックに関係のないメモリの問題を引き起こす方法はたくさんあります。ただし、あまり一般的ではありません。
jjnguy 2009

9
ヒープ以外のメモリサイズを制御できないことを確認してください。
matt b

あなたがそれを介してそれを制御できることはかなり確かです-XX:MaxDirectMemorySize。私が確認するために厳重にプロファイリングしたわけではありませんが、;)
alexandergunnarson

2
@alexandergunnarson MaxDirectMemorySize影響を受けるのはNIOバッファーのみです。他のあらゆる種類のネイティブメモリがJVMによって使用されます。
クリストファーシュルツ

16

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

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


8
あるulimitLinuxのコマンド?私はグーグルですばやく検索しましたがulimit、JVM との間に関係はありませんでした。Y
サム

はい、それはlinuxコマンドです。tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/...
vsingh

11

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

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

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


1

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

使ったことがない。多分あなたはそれが役に立つでしょう。


1
opがこれを望んでいたとは思いません。JavaからC / C ++コードを呼び出すときにネイティブメモリが使用されます。
om-nom-nom

6
ダイレクトメモリでバッファを割り当てる場合、nio呼び出しを行うときにネイティブメモリも使用されます。(...とクラスローダー、スレッド情報....)
stu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.