在我们的 Glassfish 应用程序中,我大约每小时会看到一次完整的 GC。从 GC 日志中提取:
9.210: [Full GC 28311K->27979K(6422528K), 0.3770238 secs]
...
3609.647: [Full GC 1186957K->597880K(6478208K), 4.5102977 secs]
...
7214.192: [Full GC 742184K->595596K(6469504K), 4.3726625 secs]
...
10818.805: [Full GC 756228K->570803K(6455936K), 4.8630472 secs]
只要 Glassfish 出现,这种模式就会大致重复。中间的“...”是增量 GC。时间似乎非常可疑 - 为什么我们会看到大约每小时一次的完整 GC?
JVM启动参数:
-Xms6400m
-Xmx6400m
-XX:NewSize=1024m
-XX:MaxNewSize=1024m
-XX:PermSize=256m
-XX:MaxPermSize=1024m
-XX:+UseParallelGC
-XX:+UseParallelOldGC
-Xloggc:C:\glassfish3\glassfish\domains\domain1\logs\gc\gc.log
-XX:+AggressiveOpts
-Xss1024k
-XX:+CMSClassUnloadingEnabled
根据 JVisualVM 的说法,我们还没有接近用完堆空间。
Glassfish 3.1.2.2、Oracle JDK 1.6.0_45、Windows Server 2008