首页 > 解决方案 > JVM GC 日志中的“升级失败”是什么意思?

问题描述

2020-06-17T12:54:16.995+0800: 681976.777: [GC (Allocation Failure) 2020-06-17T12:54:16.995+0800: 681976.777: [ParNew (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  (promotion failed): 1823484K->1883608K(1887488K), 0.4255307 secs]

2020-06-17T12:54:17.421+0800: 681977.202: [CMS: 952879K->532413K(2097152K), 2.9620031 secs] 2776364K->532413K(3984640K), [Metaspace: 211696K->211696K(1241088K)], 3.3881912 secs] [Times: user=3.23 sys=0.65, real=3.39 secs] 

我的问题是,这个日志是什么意思?

(0: promotion failure size = 2)  (1: promotion failure size = 3)  (2: promotion failure size = 17912169)  (3: promotion failure size = 3)  

标签: garbage-collectionjvm

解决方案


您没有说您使用哪个 JDK/JVM 以及什么垃圾收集,但根据我发现它是很久以前已弃用并在 JDK 14 中删除的 CMS:https ://openjdk.java.net/jeps /363 你应该认真考虑切换到更现代的 JDK/GC

也就是说,由于 Old gen 中的空间(内存)不足或其碎片,GC 似乎未能将对象从 Youn 代“提升”到 Old 代。以下是他们讨论此问题的一些链接:


推荐阅读