web-dev-qa-db-ja.com

環境変数を使用してJavaの最小および最大ヒープサイズを設定するにはどうすればよいですか?

環境変数を使用してJavaの最小および最大ヒープサイズを設定するにはどうすればよいですか?

Javaの起動時にヒープサイズを設定できることは知っていますが、サーバーの環境変数を使用してこれを調整したいと思います。

66
Jeff Thompson

環境変数を直接使用して実行することはできません。 Javaコマンドに渡される「非標準」オプションのセットを使用する必要があります。詳細については、実行:Java -X。探しているのは-Xmxと-Xmsです(これは「初期」ヒープサイズなので、おそらく探しているものです)。

AntやTomcatなどの一部の製品には、Java_OPTS環境変数を探すバッチスクリプトが付属している場合がありますが、Javaランタイムの一部ではありません。これらの製品のいずれかを使用している場合、次のような変数を設定できます。

set Java_OPTS="-Xms128m -Xmx256m"  

次のような独自のコマンドラインを使用して、このアプローチを取ることもできます。

set Java_OPTS="-Xms128m -Xmx256m"  
Java ${Java_OPTS} MyClass
72
Todd

-Xmxなどのオプションを選択するには、antやTomcatだけでなくJavaプロセスが必要な場合は、環境変数_Java_OPTIONSを使用します。

Bashの場合:export _Java_OPTIONS="-Xmx1g"

50
wmli

実際には、環境変数を介してSunのJVMのグローバルなデフォルトを設定する方法があります。

コマンドライン引数にJVMを追加せずにJVMを起動するたびに有効になるようにJavaシステムプロパティを設定する方法 を参照してください。

14
Vadzim

環境変数を使用してそれを行うことはできません。 「非標準」オプションを介して行われます。実行:Java -X 詳細については。探しているオプションは-Xmxおよび-Xms(これは「初期」ヒープサイズなので、おそらく探しているものです。)

10
a2800276

環境変数をコマンドラインに置き換えるスクリプトでJavaをラップすることが唯一のオプションだと思います

4
frankodwyer

いくつかのメモ:

  1. Apache antはJava_OPTSについて何も知りませんが、Tomcatの起動スクリプトは何も知りません。 Apache antの場合、ANT_OPTSを使用して/ ant /を実行するJVMの環境に影響を与えますが、antが起動する可能性のあるものには影響しません。

  2. 設定できる最大ヒープサイズは環境に完全に依存します。ほとんどの32ビットシステムでは、利用可能なメモリに関係なく、要求できるヒープスペースの最大量は2GiBの範囲です。 64ビットシステムの最大ヒープは「本当に大きい」です。また、ヒープはJVMによって管理され、ディスクに多くのスワッピングが必要ないため、物理メモリによっても実質的に制限されます。

  3. サーバー環境では、通常-Xmsと-Xmxを同じ値に設定する必要があります。これにより、ヒープのサイズが特定のサイズに固定され、ヒープを再作成する必要がないためガベージコレクターの作業が少なくなります。サイズ.

3