有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

一些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. 是什么触发了日志1中的完整GC?看起来元空间并没有被完全分配。作为参考,这是服务器启动

  2. 日志2已清除-次要GC。它使用[GC],与[Full GC]不同。但是日志3中发生了什么?它并没有说它是完全GC,但旧一代被清除了。与此同时,年轻一代没有改变。据我所知,旧的一代仅在完全GC期间被清除(如日志5中所示)。有趣的是,Java任务控制将此事件记录为完整GC

  3. 日志4中的“升级失败”是什么意思

我将感谢任何帮助。我想知道是否有任何官方文件描述GC日志(我个人没有发现任何)。不幸的是,互联网上的所有文章仅限于两个标准日志(当涉及到串行GC时)


共 (1) 个答案

  1. # 1 楼答案

    It does not look like Metaspace is fully allocated

    它没有使用最大大小,但是在增加元空间之前,它需要进行集合以确保它需要

    It does not say that it is Full GC, but the Old generation was cleared.

    如果只对永久空间进行GC加密,则称为主要集合

    What does "promotion failed" mean in the log 4?

    在终身空间中没有足够的空间来提升新一代所有要提升的对象