【发布时间】:2015-08-30 07:07:46
【问题描述】:
我决定在我的 Eclipse Mars RC3 上尝试 G1GC for JavaEE 开发人员安装,但我发现了一个非常奇怪的行为:
如您所见,它在应用程序的生命周期内运行了近 700 次 FULL GC,而只有 30 次次要 GC。我还注意到,次要 GC 是在应用程序处于负载状态时执行的——通常是在它启动并加载很多东西时,而它在空闲时执行完整的 GC。 (这 11 个小时的大部分时间它都处于空闲状态!)我希望当应用程序什么都不做时,就不需要 GC,或者至少是次要 GC。我还监控了 eclipse 的内存消耗——在空闲时间它从未增加到超过 130-140 MB,所以这也是这些完整 GC 看起来很奇怪的另一个原因。
这是我的 eclipse.ini jvm 配置:
-server
-Xverify:none
-XX:+AggressiveOpts
-XX:+UseG1GC
-XX:MaxGCPauseMillis=100
-XX:+UseStringDeduplication
-XX:+UseCompressedOops
-XX:+UseCompressedClassPointers
-XX:MaxMetaspaceSize=256m
-Xloggc:/home/svetlin/software/eclipse/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=20m
-Xms1g
-Xmx1g
这里是 GC 日志:http://pastebin.com/sVBe4w1A
Java 版本:用于 linux-amd64 JRE (1.8.0_45-internal-b14) 的 OpenJDK 64 位服务器 VM (25.45-b02),由 gcc 4.9 的“buildd”于 2015 年 5 月 17 日 19:21:01 构建。 2
你知道为什么 G1GC 在根本不需要 GC 的情况下会执行这些完整的 GC 吗?
【问题讨论】:
标签: java garbage-collection g1gc