在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%使用时运行.