我有一个已启用GC日志记录的应用程序。堆似乎会增长,然后突然下降,但不会记录完整GC。如果有一些我可以启用的启动参数,它将告诉我哪个GC事件正在减小堆大小?

我的环境:
Linux 64位,java 1.6.0_31,Java HotSpot(TM)64位服务器VM(内部版本20.6-b01,混合模式)

VM参数:-服务器-Xms2560m -Xmx2560m -XX:+ UseConcMarkSweepGC -XX:MaxPermSize = 256m -XX:-PrintGC -XX:
-PrintGCDetails -XX:-PrintGCTimeStamps -Xloggc:/xxxxx/gc.log -Dsun.rmi.dgc.client.gcInterval = 86400000 -Dsun.rmi.dgc.server.gcInterval = 86400000

3057.609: [GC 2397254K->2385777K(2619328K), 0.0572310 secs]
3058.898: [GC 2402801K->2391301K(2619328K), 0.0566620 secs]
3059.940: [GC 2408325K->2397156K(2619328K), 0.0534080 secs]
3059.995: [GC 2397265K(2619328K), 0.0069950 secs]
3065.635: [GC 2414180K->2404934K(2619328K), 0.0732700 secs]
3065.849: [GC 2419994K(2619328K), 0.1150630 secs]
3070.248: [GC 1593931K->1591825K(2619328K), 0.1084230 secs]
3072.440: [GC 1608552K->1606431K(2619328K), 0.0533140 secs]
3087.759: [GC 1623455K->1614544K(2619328K), 0.0215850 secs]


什么事件导致堆在3065.849和3070.248之间的输出之间收缩?是否有将记录它的VM参数?我尝试添加-verbose:gc,但这不会更改输出。

最佳答案

GC分两步进行

1)次要收藏(主要清洁年轻一代)

2)主要收藏

我想您会看到有少量收藏。 tutorial可以帮助您理解这些术语。

10-04 23:16