• 看懂gc日志


    使用的是:+PrintGCDetails -XX:+PrintGCTimeStamps

    输出的日志格式:

     [Times: user=0.03 sys=0.00, real=0.01 secs]
    363.375: [GC 363.375: [ParNew: 39424K->3249K(39424K), 0.0054790 secs] 
    69520K->37044K(126848K), 0.0055800 secs]
    
    8.672: [Full GC 8.673: [Tenured: 26086K->30073K(87424K), 0.2213960 secs] 54718K->30073K(126848K), 
    [Perm : 37565K->37565K(37568K)], 0.2214900 secs] [Times: user=0.32 sys=0.01, real=0.23 secs] 
    1. [GC][Full GC] 是垃圾回收的停顿类型,而不是区分是新生代还是年老代。
    2. [Full GC] 说明发生了 Stop-The-World 。如果是调用 System.gc() 触发的,那么将显示的是 [Full GC (System)
    3. 【ParNew】,【DefNew】 , 【Tenured】 , 【Perm】: 表示 GC 发生的区域,区域的名称与使用的 GC 收集器相关。
    • 【DefNew】:Serial 收集器中新生代名为 "Default New Generation"。
    • 【ParNew】: “Parallel New Generation”。
    • 【PSYoungGen】:对于 Parallel Scavenge 收集器,新生代名为 "PSYoungGen"。
    • 年老代和永久代也相同,名称都由收集器决定。

      4. 收集大小的影响:

    • ParNew: 39424K->3249K(39424K) 表示 “GC 前该区域已使用容量 -> GC 后该区域已使用容量 (该区域内存总容量) ”。
    • 69520K->37044K(126848K)”(方括号外) 表示 “GC 前Java堆已使用容量 -> GC后Java堆已使用容量 (Java堆总容量)”。

    5. 花费时间: “0.0055800secs” 表示该区域GC所用时间,单位是

    6. [Times: user=0.32 sys=0.01, real=0.23 secs]

    • user: 用户态消耗的CPU时间、
    • sys:内核态消耗的CPU时间 
    • real: 操作从开始到结束所经过的墙钟时间。墙钟时间包括各种非运算的等待耗时,如IO等待、线程阻塞。CPU时间不包括等待时间,当系统有多核时,多线程操作会 叠加这些CPU时间,所以user或sys时间会超过real时间。
  • 相关阅读:
    模拟+位运算 HDOJ 5491 The Next
    树状数组+二分||线段树 HDOJ 5493 Queue
    线段树(区间合并) HDOJ 3308 LCIS
    双端队列 HDOJ 3530 Subsequence
    BFS HDOJ 1242 Rescue
    Codeforces Round #321 (Div. 2)
    区间专题
    递推DP HDOJ 5459 Jesus Is Here
    补题列表2
    引用与指针的异同-基础篇
  • 原文地址:https://www.cnblogs.com/leeying/p/3781559.html
Copyright © 2020-2023  润新知