JVMの起動時の-Xmsおよび-Xmxパラメータとは何ですか?


1008

JVM での使用XmsXmxパラメータについて説明してください。それらのデフォルト値は何ですか?


2
使用している場合-Xmx128m -Xms64mには、付近のピークができ275mRESは、MEM、しかし、使用している場合-Xmx128m -Xms128m、それは付近のピークができ550mRESがベストなものが... GCと何が起こるかを見て強調することであるJavaの8を使用したmemと
クリストフRoussy

回答:


1360

フラグXmxは、Java仮想マシン(JVM)の最大メモリ割り当てプールをXms指定し、初期メモリ割り当てプールを指定します。

つまり、JVMはXms大量のメモリで起動され、最大Xmx量のメモリを使用できるようになります。たとえば、以下のようにJVMを起動すると、256 MBのメモリで起動し、プロセスが最大2048 MBのメモリを使用できるようになります。

java -Xms256m -Xmx2048m

メモリフラグは、キロバイト、メガバイトなど、さまざまなサイズで指定することもできます。

-Xmx1024k
-Xmx512m
-Xmx8g

Xmsフラグはデフォルト値はありません、そしてXmx典型的には256メガバイトのデフォルト値を有しています。これらのフラグの一般的な用途は、に遭遇したときですjava.lang.OutOfMemoryError

これらの設定を使用する場合、これらの設定はJVMのヒープ用であり、JVMはヒープに割り当てられたサイズよりも多くのメモリを使用できる、または使用することに注意してください。Oracleのドキュメントから:

JVMはヒープよりも多くのメモリを使用することに注意してください。たとえば、Javaメソッド、スレッドスタック、ネイティブハンドルは、JVM内部データ構造と同様に、ヒープとは別のメモリに割り当てられます。


12
つまり、メモリ使用量がXmxを超えると、jvmのメモリ不足例外が発生します。
Pankaj 2013

59
それは正解です。それを超えようとすると、十分なメモリを解放しようとしてゴミを収集する可能性があります。それでも要求を満たすのに十分なメモリがなく、ヒープがすでに最大サイズに達している場合は、OutOfMemoryErrorが発生します。
David Conrad

2
ForkJoinフレームワークを使用していると、メモリを大量に消費しているため、コンピューターがクラッシュします。OpenJDKでは、デフォルトでメモリにハード制限がない可能性はありますか?
Christophe De Troyer 2014年

6
「Java -Xmx 1Gは1 GBまたは2 ^ 30 Bを意味ますか?」で明確化されていますか?、経由-Xms256mで開始するメモリの量を明確に表す方法は、「256 MB」ではなく「256 MiB」です。これは、10の累乗ではなく2の累乗を使用するためです。en.wikipedia.org/wiki/Binary_prefixを参照してください。さらに、Survivorスペースの追加プール用に使用できないスペースが確保されるため、実際に使用できるメモリ量は、Runtime.getRuntime().maxMemory()-Xmxで指定された値よりも少なくなります
nealmcb

1
ヒープサイズに関連する一般的なエラーの役立つガイド:blog.paulgu.com/java/6-common-errors-in-setting-java-heap-size
ctrlplusb

315

コマンドjava -Xを実行すると、すべての-Xオプションのリストが表示されます。

C:\Users\Admin>java -X
-Xmixed           mixed mode execution (default)
-Xint             interpreted mode execution only
-Xbootclasspath:<directories and zip/jar files separated by ;>
                      set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
                      append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
                      prepend in front of bootstrap class path
-Xdiag            show additional diagnostic messages
-Xnoclassgc       disable class garbage collection
-Xincgc           enable incremental garbage collection
-Xloggc:<file>    log GC status to a file with time stamps
-Xbatch           disable background compilation
-Xms<size>        set initial Java heap size.........................
-Xmx<size>        set maximum Java heap size.........................
-Xss<size>        set java thread stack size
-Xprof            output cpu profiling data
-Xfuture          enable strictest checks, anticipating future default
-Xrs              reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni       perform additional checks for JNI functions
-Xshare:off       do not attempt to use shared class data
-Xshare:auto      use shared class data if possible (default)
-Xshare:on        require using shared class data, otherwise fail.
-XshowSettings    show all settings and continue
-XshowSettings:all         show all settings and continue
-XshowSettings:vm          show all vm related settings and continue
-XshowSettings:properties  show all property settings and continue
-XshowSettings:locale      show all locale related settings and continue

-Xオプションは非標準であり、予告なく変更されることがあります。

これがXmsXmxだけでなく、最も重要な他の多くのことを理解するのに役立つことを願っています。:)


1
@RupeshYadavのおかげで、今日新しいコマンドを学びました
jumping_monkey

18

IDEで指定できます。たとえば、実行構成の Eclipseの場合→ VM引数。あなたは入ることができる-Xmx800m -Xms500mよう

ここに画像の説明を入力してください


OSXのRubyMineでは、[ヘルプ]メニュー> [カスタムVMオプションの編集]にあります。
ジョンシュナイダー、

8
これは質問の答えにはなりません。問題は、それらをどのように設定するかではなく、何のためにあるかについてです。
キャプテンマン

@Hearen intellijで隔離する方法??

13

質問自体はすでに上記で対処されています。デフォルト値の一部を追加するだけです。

あたりとしてhttp://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

Xmxのデフォルト値は、プラットフォームとシステムで使用可能なメモリの量によって異なります。


8
(JRockitのほかに)他のJVMの場合は、あなたのJVMのデフォルトのXmxの/のXmsの値を決定するために、この記事を参照してください。stackoverflow.com/questions/4667483/...
オーガPsalm33

3

起動時の-Xms初期ヒープサイズ。ただし、作業プロセス中、 ユーザーの非アクティブ状態またはGCの反復により、ヒープサイズは-Xms未満になる場合があります。これは最低限必要なヒープサイズではありません。

-Xmx最大ヒープサイズ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.