プロジェクトにファイルのアップロードのシナリオがあります。大きなファイルをアップロードしようとすると、OutOfMemoryエラーが発生します。このエラーは、Javaヒープサイズに関連しています。
Javaでヒープサイズを増やすにはどうすればよいですか。また、このためにどのファイルを変更する必要がありますか?アプリケーションの実行にjboss 5.1サーバーを使用しています。
通常の方法でJVM引数として設定できます。 -Xms1024m -Xmx2048m
最小ヒープ1GB、最大ヒープ2GB。 JBossはJava_OPTS
環境変数を使用して追加のJVM引数を含めるため、/bin/run.conf.bat
ファイルで指定できます。
set "Java_OPTS=%Java_OPTS% -Xms1024m -Xmx2048m"
ただし、これは実際のソリューションよりも回避策です。複数のユーザーが同時に大きなファイルをアップロードすると、遅かれ早かれ同じ問題が発生します。何もせずにメモリを増やし続ける必要があります。むしろ、ファイルアップロードパーサーを構成して、アップロードされたファイルを完全にメモリではなく一時ディスクに保存するようにしてください。使用しているパーサーが不明な限り、適切な答えを出すことはできません。ただし、Apache Commons FileUploadが頻繁に使用される場合は、キーワードとして「しきい値」を使用してドキュメントを読み、アップロードされたファイルのメモリ制限を構成する必要があります。ファイルサイズがしきい値を超えると、ディスクに書き込まれます。
Wildfly 8以降では、/bin/standalone.conf
そしてそこにJava_OPTSを配置します。必要なものはすべて揃っています。
Run.confファイルの次のエントリを編集します。ただし、同じJBossで複数のJVMを実行している場合は、コマンドライン引数-Xms2g -Xmx4g(または任意の望ましい開始/最大メモリ設定)を使用して実行できます。
if [ "x$Java_OPTS" = "x" ]; then
Java_OPTS="-Xms2g -Xmx4g -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true
Javaを実行するときは、-Xmsおよび-Xmxコマンドラインオプションを使用します。
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
さらにヘルプが必要な場合は、コマンドラインにJava -X
と入力してください。
JBoss binフォルダーでファイルrun.bat(Unixではrun.sh)を探します
その行の最後でset Java_OPTS
(またはUnixではJava_OPTS)の行を探し、-Xmx512mを追加します。数値をJBossに割り当てるメモリの量に変更します。
カスタムスクリプトを使用してjbossインスタンスを起動している場合は、set Java_OPTSオプションもそこに追加できます。
ヒープサイズの増加に必要な構成の変更について述べましたWindowsまたはLinux環境。
Linux:
bin/standalone.conf
次の行を確認してください。
Java_OPTS
必要に応じてヒープサイズのニーズに合わせて変更します
-Xms1303m: initial heap size in megabytes
-Xmx1303m: maximum heap size in megabytes
Java_OPTS="-Xms1024M -Xmx2048M -XX:MaxPermSize=2048M -XX:MaxHeapSize=2048M"
Windows:
bin/standalone.conf.bat
Java_OPTS="-Xms1024M -Xmx2048M -XX:MaxPermSize=2048M -XX:MaxHeapSize=2048M"
サーバーをrestartすると、ヒープサイズエラーを表示せずに動作します。
詳細については、以下のリンクを参照してください。
私の場合、jboss 6.3
変更しなければならなかったJava_OPTS
ファイル内jboss-eap-6.3\bin\standalone.conf.bat
および次の値を設定-Xmx8g -Xms8g -Xmn3080m
jvmが8GBのスペースを取るため。
変更するもの
「Java_OPTS =%Java_OPTS%-Xms1024m -Xmx2048m」を設定します
どこで変更しますか? (通常は)
bin/standalone.conf(Linux)standalone.conf.bat(Windows)
既存の設定を上書きするカスタムスクリプトを使用している場合はどうなりますか?それから?
setJBosssEnvironment.cmd/.sh(ファイル名の種類がそこにあります)
詳細については、委員会メンバーの一部がすでに提供しています! BalusC 。
Bin/standalone.conf.batのjbossに次のオプションを追加します
set "Java_OPTS=-Xms1G -Xmx1G -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1024m"