WindowsマシンのTomcatにJava_OPTS
を設定しようとしていますが、複数の変数を追加するとエラーが発生し続けます。
たとえば、これは機能します:
set Java_OPTS="-Xms512M"
しかし、これはそうではありません:
set Java_OPTS="-Xms512M -Xmx1024M"
次のエラーが発生します。
Invalid initial heap size: -Xms512M -Xmx1024M
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
1つの変数を設定できるかのように(-Xmxも機能します)、複数の変数は設定できません。
指示されたsetenv.bat
ファイルを使用しており、Tomcatは7.0.35です。
どうやら正しいフォームには""
がありません
のように
set Java_OPTS=-Xms512M -Xmx1024M
Windowsの場合、変数値にspace( "")が含まれている場合、変数名の前に次のようにquotes( ")を置くのが正しい方法です。
set "Java_OPTS=-Xms512M -Xmx1024M"
試して
set Java_OPTS=%Java_OPTS% -Xms512M -Xmx1024M
Gauravとuser2550946の答えの組み合わせが一番好きですが、さらに2つの側面を追加したいと思います。
Java_OPTS
を使用せず、代わりにCATALINA_OPTS
を使用します。これは、シャットダウンするためではなく、Tomcatを起動するためだけに使用されます。通常、Tomcatの起動時にメモリを増やす必要がありますが、シャットダウンプロセス(スピンアップし、Tomcatにシャットダウンしてから終了するように指示するプロセス)には、特に調整されたリソースは必要ありません。実際、OSから利用可能なメモリが途方もない量になった場合、シャットダウンが失敗することさえあります。
実動システムでは、すぐに最大許容メモリーを要求することをお勧めします。遅かれ早かれメモリが必要になると予想する場合、夜中の午前3時にメモリが使用できないことを発見したくないので、サーバーを起動したときです。したがって、-Xmx
および-Xms
を実稼働システムで同じ値に設定します。 (これにより、アスペクト1の関連性がさらに高まります)
または、1行で、ここに私の推奨事項があります。
set "CATALINA_OPTS=%CATALINA_OPTS% -Xms1024M -Xmx1024M"
Setenv.batという名前のファイルを作成し、Tomcat binディレクトリに配置することをお勧めします。このファイル(catalina.batおよびcatalina.shスクリプトによって実行される)を使用すると、Java_OPTS変数を使用して以下のTomcat環境設定を変更できます。
最小および最大メモリヒープサイズを設定できます
JVM -Xmsおよび-Xmxパラメーター。
最適な制限は、Integrator ETLが実行する変換など、多くの条件に依存します。情報ディスカバリー変換の場合、最大1 GBが推奨されます。たとえば、最小ヒープサイズを128 MBに、最大ヒープサイズを1024 MBに設定するには、次を使用します。
Java_OPTS=-Xms128m -Xmx1024m
PermGen(パーマネントジェネレーション)のメモリスペースの上限をデフォルトよりも大きいサイズに設定する必要があります。デフォルトの64 MBは、エンタープライズアプリケーションには十分ではありません。適切なメモリ制限はさまざまな基準に依存しますが、ほとんどの場合、256 MBが適切な選択です。 PermGenスペースの最大値が低すぎると、OutOfMemoryError:PermGenスペースエラーが発生する場合があります。 PermGenの最大制限は、次のJVMパラメーターで設定できます
-XX:MaxPermSize=256m
パフォーマンス上の理由から、アプリケーションをサーバーモードで実行することをお勧めします。 Apache Tomcatは、デフォルトではサーバーモードで実行されません。 JVM -serverパラメーターを使用して、サーバーモードを設定できます。 setenvファイルの環境変数のJava_OPTS変数にJVMパラメーターを設定できます。
The following is an example of a setenv.bat file:
set "Java_OPTS=%Java_OPTS% -Xms128m -Xmx1024m -XX:MaxPermSize=256m -server"
これは、JVMに割り当てるメモリの量が利用できないか、利用可能なメモリを超えて割り当てている可能性があるためです。小さいサイズを試してみると、違いがわかります。
試してください:
set Java_OPTS=-Xms128m -Xmx512m -XX:PermSize=128m
SET Java_HOME=C:\Applications\Java\java_8
SET PATH=%PATH%;C:\Applications\Java\java_8\bin
SET Java_OPTIONS=-d64 -Xms128g -Xmx128g