GC 暂停 5 秒,但标记、扫描和压缩时间不到 1 秒
GC pauses of 5 seconds but mark, sweep and compact take less than 1 second
我有一个 AIX 服务器 运行 一个使用 gencon GC 策略的具有 8 GB 堆的 JVM 进程。今天我有 5 秒的暂停时间,这令人担忧。我查看了 GC 日志中的事件,但无法弄清楚所有这些时间都花在哪里了。
<con event="collection" id="1" timestamp="Oct 22 13:34:10 2015" intervalms="0.000"> <time exclusiveaccessms="0.195" /> <nursery freebytes="871692288" totalbytes="966367232" percent="90" /> <tenured freebytes="375809024" totalbytes="7516192768" percent="4" >
<soa freebytes="0" totalbytes="7140383744" percent="0" />
<loa freebytes="375809024" totalbytes="375809024" percent="100" /> </tenured> <stats tracetarget="2430736896">
<traced total="2804446392" mutators="2591437504" helpers="213008888" percent="115" />
<cards cleaned="1874" kickoff="102056216" /> </stats> <con event="remembered set scan">
<stats objectsfound="17649" traced="110458224" timetakenms="129.797" /> </con> <con event="final card cleaning">
<stats cardscleaned="334" traced="9118008" durationms="7.732" /> </con> <gc type="global" id="1" totalid="929" intervalms="0.000">
<classloadersunloaded count="162267" timetakenms="4957.805" />
<refs_cleared soft="1942" threshold="32" weak="164659" phantom="0" />
<finalization objectsqueued="120" />
***<timesms mark="258.390" sweep="33.125" compact="0.000" total="5267.373" />***
<nursery freebytes="904360200" totalbytes="966367232" percent="93" />
<tenured freebytes="3848182720" totalbytes="7516192768" percent="51" >
<soa freebytes="3472373696" totalbytes="7140383744" percent="48" />
<loa freebytes="375809024" totalbytes="375809024" percent="100" />
</tenured> </gc> <nursery freebytes="904360200" totalbytes="966367232" percent="93" /> <tenured freebytes="3848182720" totalbytes="7516192768" percent="51" >
<soa freebytes="3472373696" totalbytes="7140383744" percent="48" />
<loa freebytes="375809024" totalbytes="375809024" percent="100" /> </tenured> <time totalms="5406.538" /> </con>
如何找到完整 GC 的哪个 activity 部分占用了大部分暂停时间?
谢谢
您没有附加任何示例 GC 日志,但根据您的描述,您是 运行 CMS 收集器。长时间停顿通常是由完全 GC 引起的,这种情况有时会发生在这个收集器上——它主要是并发的。我建议在出现问题的时候上传一些示例 GC 日志,并查看这篇名为“Understanding CMS GC Logs”的文章。
扫描 class 个加载程序所花费的时间未计算在内:
<classloadersunloaded count="162267" timetakenms="4957.805" />
内存中有 162267 class 个加载器,扫描时间为 4957.805 毫秒。这似乎是已知问题,解决方法和修复在这里:http://www-01.ibm.com/support/docview.wss?uid=swg1IZ76742
我有一个 AIX 服务器 运行 一个使用 gencon GC 策略的具有 8 GB 堆的 JVM 进程。今天我有 5 秒的暂停时间,这令人担忧。我查看了 GC 日志中的事件,但无法弄清楚所有这些时间都花在哪里了。
<con event="collection" id="1" timestamp="Oct 22 13:34:10 2015" intervalms="0.000"> <time exclusiveaccessms="0.195" /> <nursery freebytes="871692288" totalbytes="966367232" percent="90" /> <tenured freebytes="375809024" totalbytes="7516192768" percent="4" >
<soa freebytes="0" totalbytes="7140383744" percent="0" />
<loa freebytes="375809024" totalbytes="375809024" percent="100" /> </tenured> <stats tracetarget="2430736896">
<traced total="2804446392" mutators="2591437504" helpers="213008888" percent="115" />
<cards cleaned="1874" kickoff="102056216" /> </stats> <con event="remembered set scan">
<stats objectsfound="17649" traced="110458224" timetakenms="129.797" /> </con> <con event="final card cleaning">
<stats cardscleaned="334" traced="9118008" durationms="7.732" /> </con> <gc type="global" id="1" totalid="929" intervalms="0.000">
<classloadersunloaded count="162267" timetakenms="4957.805" />
<refs_cleared soft="1942" threshold="32" weak="164659" phantom="0" />
<finalization objectsqueued="120" />
***<timesms mark="258.390" sweep="33.125" compact="0.000" total="5267.373" />***
<nursery freebytes="904360200" totalbytes="966367232" percent="93" />
<tenured freebytes="3848182720" totalbytes="7516192768" percent="51" >
<soa freebytes="3472373696" totalbytes="7140383744" percent="48" />
<loa freebytes="375809024" totalbytes="375809024" percent="100" />
</tenured> </gc> <nursery freebytes="904360200" totalbytes="966367232" percent="93" /> <tenured freebytes="3848182720" totalbytes="7516192768" percent="51" >
<soa freebytes="3472373696" totalbytes="7140383744" percent="48" />
<loa freebytes="375809024" totalbytes="375809024" percent="100" /> </tenured> <time totalms="5406.538" /> </con>
如何找到完整 GC 的哪个 activity 部分占用了大部分暂停时间?
谢谢
您没有附加任何示例 GC 日志,但根据您的描述,您是 运行 CMS 收集器。长时间停顿通常是由完全 GC 引起的,这种情况有时会发生在这个收集器上——它主要是并发的。我建议在出现问题的时候上传一些示例 GC 日志,并查看这篇名为“Understanding CMS GC Logs”的文章。
扫描 class 个加载程序所花费的时间未计算在内:
<classloadersunloaded count="162267" timetakenms="4957.805" />
内存中有 162267 class 个加载器,扫描时间为 4957.805 毫秒。这似乎是已知问题,解决方法和修复在这里:http://www-01.ibm.com/support/docview.wss?uid=swg1IZ76742