garbage-collection - 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)
解决方案
您没有说您使用哪个 JDK/JVM 以及什么垃圾收集,但根据我发现它是很久以前已弃用并在 JDK 14 中删除的 CMS:https ://openjdk.java.net/jeps /363 你应该认真考虑切换到更现代的 JDK/GC。
也就是说,由于 Old gen 中的空间(内存)不足或其碎片,GC 似乎未能将对象从 Youn 代“提升”到 Old 代。以下是他们讨论此问题的一些链接:
推荐阅读
- node.js - Swagger JSDoc 中的 VSCode 缩进
- python - Python:从父脚本运行多个脚本,您还可以在其中设置变量值
- apache-spark - 如何从 CLI 中终止 Spark 作业?
- angular - Angular Reactive Forms 使用服务中的 Observable 进行异步验证
- javascript - 使用 jquery/javascript 将带有下拉列表的 html 表导出到 CSV 文件
- python - 如何在 python 中加载在 matlab 中训练的深度学习模型
- node.js - 我们可以调整自适应卡片中按钮的大小吗?
- linux - 有没有办法让这个跨平台?
- git - 在这种情况下如何避免这么多合并冲突?
- java - 增加 Thorntail 中的计划任务超时时间