JVM的GC日志及運(yùn)行參數(shù)解讀
正文
{Heap before GC invocations=35866 (full 34): par new generation total 290176K, used 287809K [0x00000000d4400000, 0x00000000e7000000, 0x00000000e7000000) eden space 273152K, 100% used [0x00000000d4400000, 0x00000000e4ec0000, 0x00000000e4ec0000) from space 17024K, 86% used [0x00000000e4ec0000, 0x00000000e5d10770, 0x00000000e5f60000) to space 17024K, 0% used [0x00000000e5f60000, 0x00000000e5f60000, 0x00000000e7000000) concurrent mark-sweep generation total 409600K, used 159259K [0x00000000e7000000, 0x0000000100000000, 0x0000000100000000) Metaspace used 137146K, capacity 146452K, committed 147072K, reserved 378880K class space used 15581K, capacity 17238K, committed 17536K, reserved 247808K 2023-09-02T01:18:40.811+0000: 142176.656: [GC (Allocation Failure) 2023-09-02T01:18:40.811+0000: 142176.657: [ParNew: 287809K->13868K(290176K), 0.0142053 secs] 447069K->173146K(699776K), 0.0144550 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] Heap after GC invocations=35867 (full 34): par new generation total 290176K, used 13868K [0x00000000d4400000, 0x00000000e7000000, 0x00000000e7000000) eden space 273152K, 0% used [0x00000000d4400000, 0x00000000d4400000, 0x00000000e4ec0000) from space 17024K, 81% used [0x00000000e5f60000, 0x00000000e6ceb260, 0x00000000e7000000) to space 17024K, 0% used [0x00000000e4ec0000, 0x00000000e4ec0000, 0x00000000e5f60000) concurrent mark-sweep generation total 409600K, used 159277K [0x00000000e7000000, 0x0000000100000000, 0x0000000100000000) Metaspace used 137146K, capacity 146452K, committed 147072K, reserved 378880K class space used 15581K, capacity 17238K, committed 17536K, reserved 247808K }
一段GC日志
JVM參數(shù)為:-Xms700m -Xmx700m -Xmn300m -XX:MetaspaceSize=250m -XX:MaxMetaspaceSize=250m -XX:SurvivorRatio=16
如上是一段GC日志,先來(lái)解讀這一行:
2023-09-02T01:18:40.811+0000: 142176.656: [GC (Allocation Failure) 2023-09-02T01:18:40.811+0000: 142176.657: [ParNew: 287809K->13868K(290176K), 0.0142053 secs] 447069K->173146K(699776K), 0.0144550 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
2023-09-02T01:18:40.811+0000:表示的是一個(gè)日期格式
142176.656:系統(tǒng)運(yùn)行142176.656秒的時(shí)候發(fā)生。
GC:表明進(jìn)行一次垃圾回收,前面沒(méi)有Full修飾,表明這是一次Minor GC。注意它不是表示只GC新生代。
(Allocation Failure):表示本次引起GC的原因是因?yàn)樵谀贻p代中沒(méi)有足夠的空間能夠存儲(chǔ)新的數(shù)據(jù)了。
ParNew:表明本次GC發(fā)生在年輕代并且使用的是ParNew垃圾收集器。ParNew是一個(gè)Serial收集器的多線(xiàn)程版本,會(huì)使用多個(gè)CPU和線(xiàn)程完成垃圾收集工作(默認(rèn)使用的線(xiàn)程數(shù)和CPU數(shù)相同,可以使用-XX: ParallelGCThreads參數(shù)限制)。該收集器采用復(fù)制算法回收內(nèi)存,期間會(huì)停止其他工作線(xiàn)程,即Stop The World。
287809K->13868K(290176K):?jiǎn)挝皇荎B
三個(gè)參數(shù)分別為:GC前該內(nèi)存區(qū)域(這里是年輕代)使用容量,GC后該內(nèi)存區(qū)域使用容量,該內(nèi)存區(qū)域的總?cè)萘浚‥den區(qū) + 1個(gè)Survivor區(qū))。
0.0142053 secs:該內(nèi)存區(qū)域GC耗時(shí),單位是秒。
447069K->173146K(699776K):三個(gè)參數(shù)分別為:堆區(qū)垃圾回收前的大小,堆區(qū)垃圾回收后的大小,堆區(qū)總大小。
0.0144550 secs:該內(nèi)存區(qū)域GC耗時(shí),單位是秒。
[Times: user=0.01 sys=0.00, real=0.01 secs]:分別表示用戶(hù)態(tài)耗時(shí),內(nèi)核態(tài)耗時(shí)和總耗時(shí)。
其他日志解讀
如果設(shè)置了 PrintHeapAtGC 參數(shù),則 HotSpot 在 GC 前后都會(huì)將 GC 堆的概要信息輸出出來(lái)。
Heap before GC 和 Heap after GC 分別表示 GC 前后堆的信息的開(kāi)始,invocations 表示 GC 的次數(shù),可以看到 后面跟了個(gè) invocations,這里 invocations 表示總的 GC 次數(shù),可以發(fā)現(xiàn)在 after 之后,invocations 自增了,而 full 表示第幾次 Full GC。
invocations 會(huì)隨著系統(tǒng)運(yùn)行一直自增下去,通過(guò)這些信息可以很輕松的統(tǒng)計(jì)出一段時(shí)間的 GC 次數(shù)。
Heap before GC invocations=35866 (full 34): par new generation total 290176K, used 287809K [0x00000000d4400000, 0x00000000e7000000, 0x00000000e7000000) eden space 273152K, 100% used [0x00000000d4400000, 0x00000000e4ec0000, 0x00000000e4ec0000) from space 17024K, 86% used [0x00000000e4ec0000, 0x00000000e5d10770, 0x00000000e5f60000) to space 17024K, 0% used [0x00000000e5f60000, 0x00000000e5f60000, 0x00000000e7000000) Heap after GC invocations=35867 (full 34): par new generation total 290176K, used 13868K [0x00000000d4400000, 0x00000000e7000000, 0x00000000e7000000) eden space 273152K, 0% used [0x00000000d4400000, 0x00000000d4400000, 0x00000000e4ec0000) from space 17024K, 81% used [0x00000000e5f60000, 0x00000000e6ceb260, 0x00000000e7000000) to space 17024K, 0% used [0x00000000e4ec0000, 0x00000000e4ec0000, 0x00000000e5f60000)
再看下面的日志,可以看到年輕代和老年代所使用的垃圾回收器,以及各自的情況。
新生代 par new generation 表示使用 ParNew 作為垃圾回收器,一共 290176 K 大小,使用了 287809 K 大小。其中 eden 區(qū)已經(jīng)滿(mǎn)了,from survivor 用了 86%,to survivor 用了 0%,每個(gè)后面都跟了內(nèi)存地址,頭一個(gè)表示起始地址,第二個(gè)表示當(dāng)前用到的最大地址,第三個(gè)表示終止地址。
觀察 before 和 after,細(xì)心點(diǎn)可以觀察到 from 和 to 的地址對(duì)調(diào)了。
緊跟著 par new generation 后面的是 concurrent mark-sweep generation,總共的量409600K,使用的量159277K,地址可以清楚的看到,后面跟著的三個(gè)參數(shù)同樣是起止地址,而第二個(gè)和第三個(gè)是相同的。
此外還給出了 Metaspace 的使用情況,以及 class space 的使用情況。這兩個(gè)值初始會(huì)比較小,在使用過(guò)程中會(huì)容量會(huì)逐步擴(kuò)大。
- used:加載的類(lèi)的空間量。
- capacity: 當(dāng)前分配塊的元數(shù)據(jù)的空間。
- committed: 空間塊的數(shù)量。
- reserved:元數(shù)據(jù)的空間保留(但不一定提交)的量。
以上就是JVM的GC日志及運(yùn)行參數(shù)解讀的詳細(xì)內(nèi)容,更多關(guān)于JVM GC日志解讀的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring Security 安全框架應(yīng)用原理解析
這篇文章主要介紹了Spring Security 安全框架應(yīng)用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07IO密集型任務(wù)設(shè)置線(xiàn)程池線(xiàn)程數(shù)實(shí)現(xiàn)方式
這篇文章主要介紹了IO密集型任務(wù)設(shè)置線(xiàn)程池線(xiàn)程數(shù)實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07通過(guò)Java?Reflection實(shí)現(xiàn)編譯時(shí)注解正確處理方法
Java注解是一種標(biāo)記在JDK5及以后的版本中引入,用于Java語(yǔ)言中向程序添加元數(shù)據(jù)的方法,這篇文章主要介紹了通過(guò)Java?Reflection實(shí)現(xiàn)編譯時(shí)注解處理方法,需要的朋友可以參考下2023-06-06webuploader 實(shí)現(xiàn)圖片批量上傳功能附實(shí)例代碼
這篇文章主要介紹了webuploader 實(shí)現(xiàn)圖片批量上傳功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11Spring?Boot小型項(xiàng)目如何使用異步任務(wù)管理器實(shí)現(xiàn)不同業(yè)務(wù)間的解耦
這篇文章主要介紹了Spring?Boot小型項(xiàng)目如何使用異步任務(wù)管理器實(shí)現(xiàn)不同業(yè)務(wù)間的解耦,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08詳解spring-boot集成elasticsearch及其簡(jiǎn)單應(yīng)用
本篇文章主要介紹了詳解spring-boot集成elasticsearch及其簡(jiǎn)單應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06淺析 ArrayList 和 LinkedList 有什么區(qū)別
ArrayList 和 LinkedList 有什么區(qū)別,是面試官非常喜歡問(wèn)的一個(gè)問(wèn)題。今天通過(guò)本文給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧2020-10-10