3

Jetty に含まれる Java の Web サービスがあります。デフォルトの ParallelGC で Sun の Java 6 を使用しており、次のコマンドライン オプションをオンにしています: "-verbose:gc -XX:+PrintGCTimeStamps --XX:+PrintGCDetails"。

プロセスがメモリ不足になると、次のようなログラインが連続して表示されます。

66872.846:[フルGC [PSYounggen:932534K-> 930686K(1865088K)] [PSOLDGEN:5595037K-> 5595024K(5595136K)] 6527571K-> 6525710K(1646024K)時間: user=12.25 sys=0.00, real=12.24 秒]
66885.098:[フルGC [PSYounggen:932608K-> 932608K(1865088K)] [PSOLDGEN:5595024K-> 5595024K(5595136K)] 6527632K-> 6527632K [16460KKEN:16460KKEN]時間: user=9.66 sys=0.01, real=9.67 秒]
66894.773:[フルGC [PSyounggen:932608K-> 932488K(1865088K)] [PSOLDGEN:5595024K-> 5595023K(5595136K)] 6527632K-> 6527512K [16460kk [> 16512K]] [16527632K]時間: user=11.85 sys=0.00, real=11.85 秒]
66906.623:[フルGC [PSyounggen:932608K-> 932608K(1865088K)] [PSOLDGEN:5595023K-> 5595023K(5595136K)] 6527631K-> 6527631K [16527631K]時間: user=9.60 sys=0.00, real=9.60 秒]
66916.224:[フルGC [PSYounggen:932608K-> 932488K(1865088K)] [PSOLDGEN:5595023K-> 5595023K(5595136K)] 6527631K-> 6527512K [16527631K] [16527631K]時間: user=9.65 sys=0.00, real=9.65 秒]
66925.881:[完全なGC [PSyounggen:932608K-> 0K(1865088K)] [PSOLDGEN:5595023K-> 413351K(5595136K)] 6527631K-> 41333351K(164870)[16487KE)[164870)]時間: user=6.90 sys=0.00, real=6.90 秒]

最初の 5 行は、ガベージ コレクターがまったく進行していないことを示しているように見えます。JVM に関する私の理解によれば、これにより OutOfMemoryError が発生するはずですが、ログにはそのようなものは見当たりません。何か (JVM レベルで) がそれらのスローを妨げている可能性はありますか? あるいは、Jetty または私のアプリケーションがそれらを抑制している可能性がありますか?

アドバイスありがとうございます!

4

1 に答える 1

1

オプションを明示的に設定するか、代わりに -XX:GCHeapFreeLimit を設定してみてください。これらのオプションのドキュメントは非常に薄く、実行している JVM の動作を正確に反映していない可能性があります。(または、関連するオプションのデフォルトが変更された可能性があります。)

于 2010-05-28T14:34:08.717 に答える