2017-04-03 29 views
0

環境上無視されます。最大ヒープサイズは12ギガバイト

  • AWS R4.XLarge(4vCPU、30ギガバイトRAM)
  • のWindows 2012R2
  • のTomcat 7、JDK-8u102

まず、私は開発者ではありませんので、しばらくお待ちください。最大ヒープを24GBまたは16GBに設定すると、Tomcatは4GBしか使用せず、java.lang.OutOfMemoryErrorをスローするアプリケーションもあります.GCオーバーヘッドの上限を超えました。私の勘違いは、GCがより多くのメモリにアクセスするのを「ブロックする」ことです。開発者のデフォルト設定は、GCのために有効である:

call :set_XX_java_opts "+UseConcMarkSweepGC" 

私は、これらのパラメータは、この問題を解決することがあります追加ビットと感触を調査しました:

call :set_XX_java_opts "+CMSParallelRemarkEnabled" 

call :set_XX_java_opts "+ScavengeBeforeFullGC" 

call :set_XX_java_opts "+CMSScavengeBeforeRemark" 

私は正しい軌道に乗っていますか?

おかげで、

フレッド

+0

すべてのJVMパラメータを共有できますか? – prasanth

+0

32ビットの代わりに64ビットのJavaをインストールします。 –

+0

もしTomcatが4GBしか使っていないのなら、なぜいくつかのアプリはotofmemoryを投げるでしょうか?ヒープダンプを取得し、ヒープで何が起こっているのかを分析し、何が起こっているのかを確認してください。いいリンクが1つあります。https://plumbr.eu/outofmemoryerror/gc-overhead-limit-exceeded – Vipin

答えて

0

先ほど述べたように、総時間の98%以上がガベージコレクションで過ごし、2%未満の場合は、パラレルGCは、「OutOfMemoryErrorが発生」をスローしますヒープが回復されました

ここでは、GCの実行が多すぎる問題が発生していることがわかりました。 この問題は、複数のバケットに見下さことができます:

  1. あなたは非常に迅速GCが回復することができますより多くのオブジェクトを作成していますか?
  2. あなたのユースケースでcorrct GCアルゴリズムを使用していますか?そう

GCのために定義され

  • システムパラメータ、GCのためのパラメータを持つあなたの質問を更新してください。 「:-PrintGCDetails -XX」をして、ヒープ・ダンプ・ファイルを使用してい-XX:

    私はあなたが最初に使用したGCの詳細を印刷することをお勧め。HeapDumpPath =を/ java_pid.hprof

    これは評価で私たちを助けます上記のポイント1とポイント2。 GCアルゴリズムの変更には多くのトレードオフがあり、ケースごとに正しいAlgoを決定する必要があります。

  • 関連する問題