java – Full GC – Sun JVM运行频率

在JDK 1.6中:我看到已经运行了完整的GC,但是旧代和perm gen空间并没有被完全使用 – 问题是根据我的理解,FGC仅在旧的gen或perm gen已满时运行 – 我无法理解为什么即使用量%很低,它仍然运行?

请参阅下面的jstat -gcutil的输出:

  S0     S1     E      O      P     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     E      O      P     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     E      O      P     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.

最佳答案 我通过放置jvm opts解决了这个问题:XX:-DisableExplicitGC.

某些外部jar文件中的某些代码可能已显式调用System.gc,从而导致此类垃圾回收行为.禁用这些,导致垃圾收集的预期行为在即将达到100%使用时运行.

点赞