apache-tomcatサーバーでホストされているアプリケーションUIがあります。 bin/setenv.sh ファイルの環境変数を次のように設定しました。
CATALINA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=512m -XX:MaxPermSize=1024m
大きなタスク(アプリケーション内のすべてのデータを使用してレポートを生成するなど)を実行するたびに「Javaヒープスペース」例外が発生すると、後続のアプリケーションは正しく機能しません。サーバーを再起動する必要があります。
私の質問は次のとおりです
-Xmsと-Xmxとは何ですか?
JavaHeapSpaceの例外を回避するには、どのような値を設定する必要がありますか?
最大値と最小値は何ですか?
サーバー構成によって異なる場合は、以下にサーバー構成を共有しました。提案してください。私は本当にこの問題を避けたい。
マイサーバー構成:RAM:8GB、プロセッサ:Octa Core、ハードドライブ:500GB
これについての情報が必要な場合はお知らせください。
答え1
-Xmsと-Xmxとは何ですか?
Xms256m ---> アプリケーションの低い初期JVMヒープサイズを選択します。だから、XMSサーバーの始動に使用されるメモリー量(MB)を指定します。
Xmx512m --->アプリケーションが許可する最大JVMヒープサイズを選択します。だから、Xmxサーバーの実行専用に使用される最大メモリー量(MB)を指定します。
JavaHeapSpaceの例外を回避するには、どのような値を設定する必要がありますか?
これはシステム構成ではなく、実行するアプリケーションの種類によって異なります。したがって、これはすべてあなたの不要な詳細です。 JVMが32ビットか64ビットかを注意してください。同様に、ローカル最小基本アプリケーションを実行するためのJVM構成があります---> -J-Xms100m -J-Xmx200m -J-XX:PermSize=100m
。
最大値と最小値は何ですか?
これは、システムとJVMの特性によって制限されます。
32ビットJVMの理論的最大ヒープ制限は4Gです。使用可能なスワップ、カーネルアドレス空間の使用量、メモリの断片化、仮想マシンのオーバーヘッドなど、さまざまな追加の制約があるため、この制限は実際にははるかに低くなる可能性があります。ほとんどの最新の32ビットWindowsシステムでは、最大ヒープサイズの範囲は1.4Gから1.6Gです。 32ビットSolarisカーネルでは、アドレス空間は2Gに制限されています。 32ビットVMを実行している64ビットオペレーティングシステムでは、最大ヒープサイズが高く、多くのSolarisシステムで4Gに近づくことができます。
アプリケーションに非常に大きなヒープが必要な場合は、64ビットアプリケーションをサポートするオペレーティングシステムのバージョンで64ビットVMを使用する必要があります。
確認するこのリンク詳細