日誌的重要性,不須要過多強調了。經過日誌,咱們能夠發現程序可能有內存(泄露)問題。本文從案例出發,具體介紹這些日誌信息,以期幫助你們更好地瞭解垃圾回收的運行狀況。spa
仍是先上圖,看看本文的主要內容:3d
咱們先來看個案例,代碼以下:日誌
啓動參數設置:blog
XX:+PrintGCDetails內存
運行main方法,輸出io
關於GC日誌的參數class
參數案例
參數解釋:垃圾回收
-XX:+PrintGCDetails 啓用日誌程序
-XX:-UseAdaptiveSizePolicy 禁用動態調整,使SurvivorRatio能夠起做用方法
-XX:SurvivorRatio=8設置Eden:Survivior=8:1
-XX:NewSize=10M -XX:MaxNewSize=10M設置整個新生代的大小爲10M
寫了一個Spring Boot項目,很是簡單的項目,裏面寫了一個controller
這段代碼實際上是想後面演示OOM用的,都行吧,這裏先用他來看看GC垃圾回收日誌。
在IDEA中設置
輸出結果
抓出一段來聊聊
GC (minor )日誌
(Allocation Failure):代表本次引發GC的緣由是由於在年輕代中沒有足夠的空間可以存儲新的數據了。
PSYoungGen:表示是GC類型
8525K:YoungGC前新生代內存佔用
352K:YoungGC新生代內存佔用
9216K:新生代總共大小
98695K:YoungGC前JVM內存佔用
98486K:YoungGC後JVM內存使用
130048K:JVM堆總大小
0.0092873 secs:YoungGC耗時
user=0.00:YoungGC用戶耗時
sys=0.00:YoungGC系統耗時
real=0.01:YoungGC實際耗時(這裏竟然四捨五入了)
Full GC 日誌
PSYoungGen: 8051K->7817K(9216K):新生代區GC先後和總大小
ParOldGen: 244969K->244969K(245760K):老年代GC先後和大小。
253020K->252786K(254976K):堆GC先後內存佔用狀況。
Metaspace: 29386K->29386K(1077248K):元空間GC先後和總大小
後面那幾項和上面同樣
GC垃圾回收日誌就是這麼簡單麼~藍(nan)不藍(nan)?