環境変数を使用してJavaの最小および最大ヒープサイズを設定するにはどうすればよいですか?
-
03-07-2019 - |
質問
環境変数を使用してJavaの最小および最大ヒープサイズを設定するにはどうすればよいですか
javaの起動時にヒープサイズを設定できることは知っていますが、サーバーの環境変数を使用してこれを調整したいと思います。
解決
環境変数を直接使用して実行することはできません。 「非標準」のセットを使用する必要があります; javaコマンドに渡されるオプション。詳細については、java -Xを実行します。探しているオプションは-Xmxと-Xmsです(これは「初期」ヒープサイズなので、おそらく探しているものです)。
AntやTomcatなどの一部の製品には、JAVA_OPTS環境変数を検索するバッチスクリプトが付属している場合がありますが、Javaランタイムの一部ではありません。これらの製品のいずれかを使用している場合、次のような変数を設定できる場合があります。
set JAVA_OPTS="-Xms128m -Xmx256m"
次のような独自のコマンドラインを使用して、このアプローチを取ることもできます。
set JAVA_OPTS="-Xms128m -Xmx256m"
java ${JAVA_OPTS} MyClass
他のヒント
-Xmx
などのオプションを選択するには、antやTomcatだけでなく java
プロセスが必要な場合は、環境変数 _JAVA_OPTIONS
を使用します。
bashの場合: export _JAVA_OPTIONS =" -Xmx1g"
実際には、環境変数を介してSunのJVMのグローバルなデフォルトを設定する方法があります。
環境変数を使用して実行することはできません。 「非標準」を介して行われますオプション。詳細については、 java -X
を実行してください。探しているオプションは -Xmx
と -Xms
です(これは「初期」のヒープサイズなので、おそらく探しているものです)。
あなたの唯一の選択肢は、環境変数をコマンドラインに置き換えるスクリプトでjavaをラップすることだと思います
注意事項:
-
Apache antはJAVA_OPTSについて何も知りませんが、Tomcatの起動スクリプトは知っています。 Apache antの場合、ANT_OPTSを使用して/ ant /を実行するJVMの環境に影響を与えますが、antが起動する可能性のあるものには影響を与えません。
-
設定できる最大ヒープサイズは環境に完全に依存します。ほとんどの32ビットシステムでは、使用可能なメモリに関係なく、要求できるヒープスペースの最大量は2GiBの範囲です。 64ビットシステムの最大ヒープは「本当に大きい」です。また、ヒープはJVMによって管理され、ディスクに多くのスワッピングを実行したくないため、物理メモリによっても実質的に制限されます。
-
サーバー環境では、通常-Xmsと-Xmxを同じ値に設定する必要があります。これにより、ヒープのサイズが特定のサイズに固定され、ガベージコレクターは、ヒープがサイズを変更する必要はありません。