如何确定完整gc的原因是扩展元空间?

时间:2017-03-20 09:43:36

标签: java garbage-collection

我使用-XX:+UseConcMarkSweepGC来使用cms gc-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps来打印详细信息gc日志。

这是完整的gc日志。

2017-03-20T16:23:07.321-0200: 64.425: [GC (CMS Initial Mark) [1 CMS-initial-mark: 10812086K(11901376K)] 10887844K(12514816K), 0.0001997 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
2017-03-20T16:23:07.321-0200: 64.425: [CMS-concurrent-mark-start]
2017-03-20T16:23:07.357-0200: 64.460: [CMS-concurrent-mark: 0.035/0.035 secs] [Times: user=0.07 sys=0.00, real=0.03 secs]
2017-03-20T16:23:07.357-0200: 64.460: [CMS-concurrent-preclean-start]
2017-03-20T16:23:07.373-0200: 64.476: [CMS-concurrent-preclean: 0.016/0.016 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
2017-03-20T16:23:07.373-0200: 64.476: [CMS-concurrent-abortable-preclean-start]
2017-03-20T16:23:08.446-0200: 65.550: [CMS-concurrent-abortable-preclean: 0.167/1.074 secs] [Times: user=0.20 sys=0.00, real=1.07 secs]
2017-03-20T16:23:08.447-0200: 65.550: [GC (CMS Final Remark) [YG occupancy: 387920 K (613440 K)]65.550: [Rescan (parallel) , 0.0085125 secs]65.559: [weak refs processing, 0.0000243 secs]65.559: [class unloading, 0.0013120 secs]65.560: [scrub symbol table, 0.0008345 secs]65.561: [scrub string table, 0.0001759 secs][1 CMS-remark: 10812086K(11901376K)] 11200006K(12514816K), 0.0110730 secs] [Times: user=0.06 sys=0.00, real=0.01 secs]
2017-03-20T16:23:08.458-0200: 65.561: [CMS-concurrent-sweep-start]
2017-03-20T16:23:08.485-0200: 65.588: [CMS-concurrent-sweep: 0.027/0.027 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
2017-03-20T16:23:08.485-0200: 65.589: [CMS-concurrent-reset-start]
2017-03-20T16:23:08.497-0200: 65.601: [CMS-concurrent-reset: 0.012/0.012 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]

如何确认完整gc的原因是扩展元空间?

1 个答案:

答案 0 :(得分:0)

对于Java 8:

元空间容量

默认情况下,类元数据分配受可用本机内存量的限制(容量当然取决于您使用32位JVM与64位以及OS虚拟内存可用性)。 可以使用新标志(MaxMetaspaceSize),允许您限制用于类元数据的本机内存量。如果未指定此标志,则Metaspace将根据运行时的应用程序需求动态调整大小。

Metaspace垃圾收集

一旦类元数据使用达到“MaxMetaspaceSize”,就会触发死类和类加载器的垃圾收集。 适当的监控和显然需要调整元空间以限制此类垃圾收集的频率或延迟。过多的Metaspace垃圾收集可能是类,类加载器内存泄漏或应用程序大小不足的症状。