4

JDK 1.6 の場合: 完全な GC が実行されていることがわかりますが、古い世代と perm 世代のスペースが完全には使用されていません - 私の理解によると、FGC は古い世代または perm 世代がいっぱいの場合にのみ実行されます - 理由がわかりません使用率が低いのに動いた?

以下の jstat -gcutil の出力を参照してください。

  S0 S1 EOP YGC YGCT FGC FGCT GCT
 0.00 82.14 51.17 13.78 26.43 219 19.347 1 0.131 19.479

   S0 S1 EOP YGC YGCT FGC FGCT GCT
 82.14 0.00 9.12 13.92 26.66 222 19.771 1 0.131 19.902

   S0 S1 EOP YGC YGCT FGC FGCT GCT
 82.14 0.00 11.07 9.07 24.15 230 20.166 2 1.851 22.017

私の最小/最大ヒープは 1024M で、最小および最大 permGen スペースは 768M と定義されています。

4

3 に答える 3

1

Switch on the verbose gc to now exactly when the full gc has happend. Because jstat shows FGC events even for major/tenured collections

For more info visit.

于 2010-11-16T05:17:39.767 に答える
1

jvm opts : を配置して問題を解決しましたXX:-DisableExplicitGC

一部の外部 jar ファイル内の一部のコードが明示的に呼び出しておりSystem.gc、その結果、このようなガベージ コレクション動作が発生している可能性があります。これらを無効にすると、使用率が 100% に達しようとしているときにガベージ コレクションの動作が期待どおりに動作しました。

于 2010-11-12T06:36:38.007 に答える
0

FGC は、古い世代またはパーマ世代がいっぱいになったときにのみ実行されます

それは真実ではない。ここでJavaリファレンスペーパーを読む

Java でのメモリ管理は、誰もが驚くかもしれません。重要なアプリケーションの JVM パラメータを設定する方法を習得するには、何年もかかります。

permGen スペースは 768M と定義されています。

128Mに減らします

于 2010-10-18T08:32:27.560 に答える