2016-07-11 7 views
1

"increase the java heap size permanently?"に提供された回答は、実際に質問に答えません。少なくとも意味では私は期待していた。私は同じページのコメントにこの詳細を追加しましたが、私はその特典を獲得していませんが、私は逃げ出します。その質問の答えは、次のように次のようにエクスポートすると述べています:export _JAVA_OPTIONS="-Xmx4g"。これは動作しますが、サーバをリブートした後は動作しません。リブート後にJavaヒープサイズを永久に増加させますか?

これはエクスポートされた変数であり、さらに下の別のメンバーとして、そのユーザーの.bashrcファイルにエイリアスを追加できます。つまり、設定はそのユーザーの環境が呼び出されたときにのみ呼び出されます。右?私が知りたいのは、このMaxHeapSizeの設定を取得する方法ですここで注意:

永久にサーバーが再起動された後も設定
$ java -XX:+PrintFlagsFinal -version | grep -iE 'MaxHeapSize' 
Picked up _JAVA_OPTIONS: -Xmx2g 
    uintx MaxHeapSize        := 2147483648  {product} 
java version "1.6.0_37" 
OpenJDK Runtime Environment (IcedTea6 1.13.9) (rhel-1.13.9.4.el6_7-x86_64) 
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode) 

。私は画像を扱うためのjarファイルを実行するbashスクリプトを持っています。これはすべてApacheユーザーによって実行されます。シェル環境を持たない。上記のエクスポート文字列をスクリプト環境に追加しても、目的のuintx MaxHeapSize値はレンダリングされません。 MaxHeapSizeをエクスポートするだけで値の変化がわかりますが、環境変数に依存しないようにこれを永続的に設定する方法が必要です。それは、私が探している答えです。ここでは、他の投稿で提供されている回答が回避策のようです。再起動後に永久に保持され、エクスポートされた環境変数に依存しないJava minおよびmaxヒープサイズのデフォルト設定をどのように設定/変更できますか?私は異なるデフォルト値を持つサーバーを持っているので、可能性があります。

は、最初の2件のコメントを読んだ後 を改定し、これはjarファイルを実行するスクリプトです:

PATH=$PATH:$HOME/bin:/usr/java/jdk1.5.0_05/bin 
CLASSPATH=.:/home/hg/bin/imageutils.jar: 
export CLASSPATH 
export PATH 
java com.hg.image.Thumbnail $1 $2 $3 $4 $5 

私は、スクリプトの先頭に以下を追加してみました: export _JAVA_OPTIONS="-Xmx4g"

しかし、私が走ったときにMaxHeapのサイズを変更しなかった:

$ java -XX:+PrintFlagsFinal -version | grep -iE 'MaxHeapSize'

+0

'export _JAVA_OPTIONS =" - Xmx4g "'を、サーバが起動されているスクリプトまたはシェルに追加する必要があります。実行中のユーザの '.bashrc'に渡します。 'export'を呼び出すことは、プログラム内でローカル変数を定義することと同じです。そのプログラムを再実行するときに再度設定する必要があります –

+1

*" jarファイルを実行するbashスクリプトがあります "*したがって、スクリプト!そのスクリプトでは 'java -jar myjar.jar'を実行するので、' java -Xmx4g -jar myjar.jar'に変更すれば、そのスクリプトはそのJavaプログラムに対して常に*(永久に)4Gを使用します。 – Andreas

+0

質問に自分のスクリプトの詳細を追加しました。したがって、両方の応答に基づいて、_JAVA_OPTIONS =をエクスポートする以外のヒープサイズのデフォルト値を変更する方法はありません。また、私が私の質問の私の改訂部分で言及したように、私はスクリプトに上記のエクスポートを追加し、それは動作しませんでした。スクリプトが実行された後も値は変わりません。だからその仕事と私はそれを目撃することはできません、または動作しない。 –

答えて

2

これは動作しますが、サーバをリブートした後は動作しません。

再起動時に新しい環境を起動するたびに設定する必要があります。これはJavaの機能ではなく、シェルで環境変数がどのように機能するかです。

イメージを処理するためにjarファイルを実行するbashスクリプトがあります。これはすべてApacheユーザーが実行します。

毎回設定するようにbashスクリプトに追加します。これがスクリプトの目的です。

エクスポートされた環境変数に依存せず、リブート後も永続的に保持されるJava最小ヒープサイズと最大ヒープサイズのデフォルト設定をどのように設定/変更できますか?

デフォルトの最大値はメインメモリの1/4であるため、メモリサイズに応じて変更されます。

OpenJDKの独自のバージョンを(使用しているように)コンパイルすることができ、そこではデフォルトを変更することができます。

+0

ありがとうございます。あなたの答えのこの部分は本当に物事を明確にするのに役立ちます: "デフォルトの最大値はメインメモリの1/4であり、メモリサイズに基づいて変化します。" –

+0

私の最終的なフォローアップの質問は、アプリケーションの使用時にApacheユーザーが実行するmybashスクリプトの 'export _JAVA_OPTIONS =" - Xmx4g "の上に次のものを追加した後、ヒープの増加を目視できるはずです'$ java -XX:+ PrintFlagsFinal -version |を実行すると、 grep -iE 'MaxHeapSize''コマンドをrootとして実行しますか?現在私はそうではありません。 –

+1

@ H-manいいえ、あなたはスクリプトを実行していないので、その効果は見えません。 – Andreas

関連する問題