一些SerialCG日志的java含义
我需要帮助了解热点串行采集器的一些日志
下面是我的JVM(1.8)生成的5个不同日志。为了便于阅读,它们被稍微裁剪了一下,但没有删除任何重要的内容
1) [Full GC (Metadata GC Threshold)
[Tenured: 0K->20760K(2796224K), 0.0516809 secs]
290882K->20760K(4054528K),
[Metaspace: 20914K->20914K(1069056K)], 0.0518074 secs]
2) [GC (Allocation Failure)
[DefNew: 1118528K->35795K(1258304K), 0.0697424 secs]
1208983K->126251K(4054528K), 0.0698470 secs]
3) [GC (Allocation Failure)
[DefNew: 1167292K->1167292K(1258304K), 0.0000172 secs]
[Tenured: 2587705K->2093117K(2796224K), 3.4401746 secs]
3754997K->2093117K(4054528K),
[Metaspace: 241446K->241446K(1296384K)], 3.4450897 secs]
4) [GC (Allocation Failure) 417.013:
[DefNew (promotion failed) : 1234062K->1258304K(1258304K), 1.4832395 secs]
[Tenured: 2796224K->2275534K(2796224K), 4.1927802 secs]
3514367K->2275534K(4054528K),
[Metaspace: 226551K->226551K(1286144K)], 5.6762551 secs]
5) [Full GC (Allocation Failure)
[Tenured: 2796224K->2424825K(2796224K), 4.8644173 secs]
4054528K->2424825K(4054528K),
[Metaspace: 226537K->226537K(1286144K)], 4.8645662 secs]
问题:
是什么触发了日志1中的完整GC?看起来元空间并没有被完全分配。作为参考,这是服务器启动
日志2已清除-次要GC。它使用[GC],与[Full GC]不同。但是日志3中发生了什么?它并没有说它是完全GC,但旧一代被清除了。与此同时,年轻一代没有改变。据我所知,旧的一代仅在完全GC期间被清除(如日志5中所示)。有趣的是,Java任务控制将此事件记录为完整GC
日志4中的“升级失败”是什么意思
我将感谢任何帮助。我想知道是否有任何官方文件描述GC日志(我个人没有发现任何)。不幸的是,互联网上的所有文章仅限于两个标准日志(当涉及到串行GC时)
# 1 楼答案
它没有使用最大大小,但是在增加元空间之前,它需要进行集合以确保它需要
如果只对永久空间进行GC加密,则称为主要集合
在终身空间中没有足够的空间来提升新一代所有要提升的对象