有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我使用-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) 个答案

  1. # 1 楼答案

    对于Java 8:

    元空间容量

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

    元空间垃圾收集

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