Parallel GC
Parallel GC
并行垃圾收集器:在young generation使用mark-copy,在Old Generation使用mark-sweep-compact;且在Young Generation和Old Generation 都會stop-the-world;收集器都使用多線程進行標記-復制和標記-壓縮。 -XX:ParallelGCThreads=0 ? ? ? ? ? —指定并行垃圾收集器執行的線程數量;默認為所在機器的邏輯核數;當邏輯核數超過8時計算公式為: ? ? ? ? ?ParallelGCThreads = 8 + ((N - 8) * 5/8):N為邏輯核數 獲取mac的邏輯核數命令:sysctl hw.logicalcpu Linux查看邏輯核數:cat /proc/cpuinfo| grep "cpu cores” 主要目標:并行垃圾收集器主要解決的是吞吐量問題,延遲時間任然會存在問題,應為會stop-the-world。Minor GC
發生在Young Generation
1:GC發生時間
2:GC發生時間(相對于JVM啟動時間)
3:區分Minor GC 和 Full GC的標志
4:觸發GC的原因;這里的Allocation Failure表示在Young Generation沒有足夠的空間對數據進行分配
5:垃圾收集器的名稱;這里的PSYoungGen代表使用并行的mark-copy和stop-the-world收集器清理Young Generation
6:GC執行前后數據占用空間大小
7:總的Young Generation空間劃分大小
8:GC執行前后數據占用空間大小
9:堆的總大小
10:GC執行持續的時間(單位為s)
11:
? ? ? ?-user:GC占用CPU時間
? ? ? ?-sys:GC花費在系統調用或等待系統事件的時間
? ? ? ?-real:停止應用的時間;這個時間應該接近于(user + sys)/ 垃圾收集使用的線程數
? ? ? ? ? ? ? ? ? ?-有些活動不是并行化的,real時間會比按公式計算的值大
?
---------------
Full GC
1:GC時間戳
2:GC執行時間,以秒為單位,相對于距離JVM啟動的時間
3:GC類型標志:Full GC 表示Young Generation 和 Old Generation都以Full GC清理
4:GC觸發原因:ergonomics表示JVM內部自動決定現在是最佳的GC時機
5:年輕代收集器類型:PSYoungGen表示并行的mark-copy且stop-the-world收集器用于收集Young Generation,通常年輕代數據的占有量會減少到0K
6:老年代收集器類型:ParOldGen表示并行的mark-sweep-compact且stop-the-world垃圾收集器被使用在老年代
7:GC執行前后老年代數據占用空間的大小
8:老年代總的空間大小(數據占用的空間+數據未占用的空間)
9:GC執行前后堆的數據占用空間大小
10:堆總的空間大小
11:Metaspace收集:大多數情況下不會進行收集,因為空間足夠大
12:GC花費的時間
13:-user:GC線程占用CPU的時間
? ? ? ? -sys:GC調用系統的時間或等待系統事件的時間
? ? ? ? -real:應用掛起的時間;應用掛起的時間應接近于(user + sys)/ 線程數
? ? ? ? ? ? ? ? ? ?-因為有些活動是非并行化的,所以實際時間會超出邏輯時間
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的Parallel GC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Owin Katana 的底层源码分析
- 下一篇: 字节的飞聊官网下线