G1 Collector没有做完整的GC

时间:2016-07-24 19:14:42

标签: java garbage-collection ehcache g1gc

切换到java 1.7.0_80后的一周内,观察到了这种行为

S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 0 32M 0 32M 512M 128M 9.5G 7.7G 640M 475M 26487 157min 0 0min 157min

没有完整的GC,分配给老一代的大空间和年轻一代中发生的太多收藏。

通过JMX

调用完整GC后

S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 0 32M 0 32M 5.2G 768M 4.8G 2.7G 640M 475M 26592 158.4min 1 0.1min 158min

GC时间缩短了很多。

参数是

-Xms10g
-Xmx10g
-XX:PermSize=640m
-XX:MaxPermSize=640m
-XX:SurvivorRatio=30
-XX:MaxTenuringThreshold=15
-XX:+UseG1GC
-XX:MaxGCPauseMillis=100
-XX:InitiatingHeapOccupancyPercent=80
-XX:G1HeapRegionSize=32m
-XX:ParallelGCThreads=16

可能是因为-XX:MaxGCPauseMillis = 100?

旧代中的许多对象都保存在ehcache中,TimeToIdle为10分钟,但如果在到期后未请求相同的对象或缓存未满,则ehcache不会清理对象。

1 个答案:

答案 0 :(得分:4)

-Xmx10g -XX:InitiatingHeapOccupancyPercent=80

我的高级算术技巧告诉我,10GB的80%是8GB。

OU 7.7G

那不到8岁。

因此不会启动并发周期。设置较低的IHOP或不明确设置它,以便G1可以在运行时自动调整它。