JVM的YoungGC日志查看


程序中打印的GC日志如何查看?

CommandLine flags: -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./ -XX:InitialHeapSize=10485760 -XX:MaxHeapSize=10485760 -XX:MaxNewSize=5242880 -XX:NewSize=5242880 -XX:OldPLABSize=16 -XX:PretenureSizeThreshold=10485760 -XX:+PrintGC -XX:+PrintGCDetails
這一行就是告訴我們程序采用的JVM參數是什么。

1。一次GC的概要說明
0.112: [GC (Allocation Failure) 0.112: [ParNew: 3392K->390K(4608K), 0.0023184 secs] 3392K->1416K(9728K), 0.0024007 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
這個就是概要說明了本次GC的執行情況。

GC (Allocation Failure) 對象分配失敗,因為我們把參數設置的很小,導致Eden區內存不夠導致Young GC

那這次GC是什么時候發生的?
0.112這個數字代表系統運行多久后發生了GC,毫秒

ParNew: 3392K->390K(4608K), 0.0023184 secs

ParNew的意思就是觸發了Young GC,年輕代我們用的是ParNew垃圾回收器

3392K->390K(4608K)

這個代表的意思是年輕代可用空間是3392,這個大小是Eden+1個Survivor的大小

然后3392K->390K,意思就是年輕代GC后存活下來390KB對象
0.0023184這個就是本次GC耗費的時間,2.3ms


3392K->1416K(9728K)這段話指的是整個java堆內存情況,整個java堆內存可用9728KB(9.5MB),其實就是年輕代4.5MB+老年代5M,
然后GC前整個Java堆內存里使用了3392KB,GC之后Java堆內存使用了1416KB。

[Times: user=0.02 sys=0.00, real=0.01 secs] 
這個意思就是本次GC消耗的時間,毫秒
2。GC過后堆內存使用情況

Heap
par new generation total 4608K, used 3580K [0x00000000ff600000, 0x00000000ffb00000, 0x00000000ffb00000)
eden space 4096K, 77% used [0x00000000ff600000, 0x00000000ff91d700, 0x00000000ffa00000)
from space 512K, 76% used [0x00000000ffa80000, 0x00000000ffae1bb0, 0x00000000ffb00000)
to space 512K, 0% used [0x00000000ffa00000, 0x00000000ffa00000, 0x00000000ffa80000)
concurrent mark-sweep generation total 5120K, used 1026K [0x00000000ffb00000, 0x0000000100000000, 0x0000000100000000)
Metaspace used 3023K, capacity 4496K, committed 4864K, reserved 1056768K
class space used 330K, capacity 388K, committed 512K, reserved 1048576K
這段日志是JVM退出的時候打印出來的當前堆內存的使用情況

par new generation   total 4608K, used 3580K [0x00000000ff600000, 0x00000000ffb00000, 0x00000000ffb00000)
eden space 4096K, 77% used [0x00000000ff600000, 0x00000000ff91d700, 0x00000000ffa00000)
from space 512K, 76% used [0x00000000ffa80000, 0x00000000ffae1bb0, 0x00000000ffb00000)
to space 512K, 0% used [0x00000000ffa00000, 0x00000000ffa00000, 0x00000000ffa80000)

par new generation   total 4608K, used 3580K,這就是說ParNew垃圾回收器負責的年輕代總共有4608KB可用內存,
目前使用了3580KB


 eden space 4096K,  77% used [0x00000000ff600000, 0x00000000ff91d700, 0x00000000ffa00000)
from space 512K, 76% used [0x00000000ffa80000, 0x00000000ffae1bb0, 0x00000000ffb00000)
to space 512K, 0% used [0x00000000ffa00000, 0x00000000ffa00000, 0x00000000ffa80000)

Eden區域使用了77%,From Survivor區512KB使用了76%


 concurrent mark-sweep generation total 5120K, used 1026K [0x00000000ffb00000, 0x0000000100000000, 0x0000000100000000)
Metaspace used 3023K, capacity 4496K, committed 4864K, reserved 1056768K
class space used 330K, capacity 388K, committed 512K, reserved 1048576K

concurrent mark-sweep generation total 5120K, used 1026K這個就是說CMS垃圾回收器負責的區域。


 Metaspace       used 3023K, capacity 4496K, committed 4864K, reserved 1056768K
class space used 330K, capacity 388K, committed 512K, reserved 1048576K
Metaspace元數據空間和class空間,存放類信息,常量池之類總容量,使用內存等等。

參考自:狸貓技術窩
















免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM