JVM GC 日志中的"promotion failure"是什么意思?


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)  

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

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

  • Java GC 升级失败
  • 避免在 Java CMS GC 中升级失败
  • https://serverfault.com/questions/698858/gc-taking-big-pause-and-parnew-promotion-failed
  • https://blogs.oracle.com/poonam/troubleshooting-long-gc-pauses

相关内容