Java 年轻的GC导致元空间增加,而不是老的Gen
在从JDK7迁移到JDK8时,我开始看到频繁的完整GC(GC延迟更高)。分析gc后,发现在年轻gc之后,元空间的使用增加,而老gen的使用保持不变。 我已将最大元空间大小(等于JDK7中的Perm Gen)设置为256MB。当使用量达到210 MB左右时,会触发完全GC。我已经尝试将metaspace最大大小设置为512MB,然后我还看到metaspace阈值导致完全GC 为什么年轻的GC会导致元空间大小增长 GC延迟因JDK8而急剧增加。JDK7的GC延迟通常低于100ms,而JDK8的完整GC延迟开始达到800-1000ms。这会影响我的应用程序性能。我使用的是并行GC算法。我怀疑元空间上的GC比旧的gen GC更耗时。任何关于JDK8调优JVM的建议都将非常有用 年轻的GC:Java 年轻的GC导致元空间增加,而不是老的Gen,java,performance,memory-leaks,garbage-collection,jvm,Java,Performance,Memory Leaks,Garbage Collection,Jvm,在从JDK7迁移到JDK8时,我开始看到频繁的完整GC(GC延迟更高)。分析gc后,发现在年轻gc之后,元空间的使用增加,而老gen的使用保持不变。 我已将最大元空间大小(等于JDK7中的Perm Gen)设置为256MB。当使用量达到210 MB左右时,会触发完全GC。我已经尝试将metaspace最大大小设置为512MB,然后我还看到metaspace阈值导致完全GC 为什么年轻的GC会导致元空间大小增长 GC延迟因JDK8而急剧增加。JDK7的GC延迟通常低于100ms,而JDK8的完整G
S0 S1 E O M CCS YGC GCT FGC FGCT GCT LGCC GCC
0.00 40.28 99.78 21.95 56.28 - 149 6.647 2 3.276 9.924 Allocation Failure No GC
54.17 0.00 0.66 21.95 57.63 - 150 6.661 2 3.276 9.937 Allocation Failure No GC
完整GC:0.00 72.80 0.00 25.15 82.51 - 213 8.550 3 3.276 11.826 Metadata GC Threshold Metadata GC Threshold
0.00 72.80 0.00 25.15 82.51 - 213 8.550 3 3.276 11.826 Metadata GC Threshold Metadata GC Threshold
元空间使用216684K,容量262051K,提交262144K,保留262144K
2015-06-30T17:47:16.079+0000:17622.342:[完全GC(元数据GC阈值)[PSYoungGen:9550K->0K(1035776K)]你能不能拉一些GC日志让我们看一下?请看一下这不会解决问题,但我想你会得到一些提示。从日志中,我们看不到任何完全GC,年轻GC的总时间不到100ms(~20ms)。可能是粘贴错误/日志不够,或者读取错误。这是young GC,显示young GC上的元空间大小增加。还添加了完整的GC日志。这取决于您运行的源,例如,如果生成动态类,然后加载并缓存其实例一段时间,那么如果它几乎到达young Generator,将导致频繁的young GCion的上限和加载的类将保留在元空间中-另请参见