JVM學習筆記——GC日誌

title: JVM學習筆記——GC日誌
date: 2018/9/3 10:28:30
description: 最近開始着手JVM的學習,在這裏把本身學習過程當中的筆記分享出來,但願能幫到一些小夥伴,同時也是對本身的學習的一個梳理。學習

GC日誌

  • GC日誌相關參數

    • -XX:+PrintGC 輸出GC日誌
    • -XX:+PrintGCDetails 輸出GC的詳細日誌
    • -XX:+PrintGCTimeStamps 輸出GC的時間戳(以基準時間的形式)
    • -XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21: 53:59.234+0800)
    • -XX:+PrintHeapAtGC 在進行GC的先後打印出堆的信息
    • -Xloggc:../logs/gc.log 日誌文件的輸出路徑
  • 理解GC日誌

    0.247: [GC (Allocation Failure) [PSYoungGen: 6278K->776K(9216K)] 6278K->4880K(19456K), 0.0032813 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]日誌

    這是一個典型的GC日誌的例子,接下來拆開解析一下日誌的幾個部分:
    • 0.247 是這次GC發生的時間,表示這次GC發生在JVM運行後0.247秒的時候。
    • [GC 表示這次GC的類型,相似的還有[Full GC,Full GC表示是帶有停頓(Stop the World)的GC。
    • (Allocatioin Failure)表示這次GC發生的緣由,若是是正常的GC,此處將會省略。Allocation Failure表明這次GC是由分配空間失敗致使的。
    • [PSYoungGen:表示GC發生的區域及使用的收集器類型,採用Parallel Scavenge收集器時,新生代被稱爲「PSYoungGen」。
    • 方括號內部的6278K->776K(9216K)含義是GC前該內存區域已使用量->GC後該區域已使用量(該內存區域總容量)
    • 緊接着方括號外的6278K->4880K(19456K)含義是GC前JAVA堆已使用量->GC後JAVA堆已使用量(JAVA堆總容量)
    • 0.0032813 secs表示該GC的耗時,單位是秒。
    • [Times: user=0.00 sys=0.00, real=0.00 secs]是詳細的時間數據,精確到小數點後兩位,部分收集器不會給出該數據。這裏的user、sys、real分別表示用戶態消耗CPU時間、內核態消耗CPU時間、所通過的牆鍾時間。
相關文章
相關標籤/搜索