一些SerialCG日志的含义

时间:2016-07-23 16:28:24

标签: java garbage-collection jvm

我需要帮助了解HotSpot Serial Collector的一些日志。

以下是我的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中触发Full GC的是什么?看起来Metaspace没有完全分配。有关信息,它是服务器启动。

  2. 日志2很清楚 - 次要GC。它与[GC]不同,与[Full GC]不同。但是在日志3中发生了什么?它并没有说它是Full GC,但老一代被清除了。与此同时,Young gen保持不变。据我所知,老一代只在Full GC期间被清除(就像在日志5中一样)。有趣的是,Java Mission Control将此事件记录为Full GC。

  3. 日志4中的“促销失败”是什么意思?

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

1 个答案:

答案 0 :(得分:1)

  

看起来Metaspace没有完全分配

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

  

它没有说它是Full GC,但老一代被清除了。

当只有终身空间被GC编辑时,它被称为主要集合。

  

日志4中“促销失败”是什么意思?

在终身空间没有足够的空间来宣传所有要从新一代启发的对象。