十種GC垃圾回收器
分代
serial和serial old
1.serial和serial old <!--jdK3,4的時候使用的--> 單執行緒執行,序列
serial(年輕代,copying) : 單執行緒,需要gc時會停止工作執行緒,stw(stop-the-world) ,gc完之後在繼續工作。 serial old(老年代 mark-sweep/mark-compact) : 單執行緒,當需要gc的時候,需要停止工作執行緒,stw,gc之後繼續工作 缺點:單執行緒,stw時間會很長,記憶體越大越不適用
parallel Scavenge 和 Parallel old (ps,po)
jdk1.8預設回收器。調優會可能從pspo-> cms,g1等等
ps:(年輕代,copying) : 多個gc執行緒,當需要gc的時候,也需要stw,gc之後才能在繼續工作 po(老年代,mark-compact) : 多執行緒,當需要gc時, stw,gc後繼續工作 缺點:gc stw,多執行緒資源開銷
ParNew 和 CMS
ParNew (年輕代 coping): 多個gc執行緒,stw 和ps一樣。 CMS (老年代 mark-compact):大致會分為4個階段。 初始標記。(工作執行緒還是會stw,在初始標記階段只找到根上的物件,然後就恢復工作執行緒) 併發標記。 (工作執行緒和gc執行緒會共同進行,底層使用的三色標記法。CMS解決方案就是會根據記憶體寫屏障將黑色物件變為灰色,繼續跟蹤下去標記。因為併發GC執行緒,所以就會又ABA問題(第一個執行緒標記完子關係會變成黑色,第二個執行緒掃描的時候可能因為物件又引用了別的子關係,會變成灰色,但是第一個執行緒標記完之前的關係後又變成了黑色)) 重新標記。(所以cms的remark階段就會從頭掃描一遍。) 併發清理 然後進行清理垃圾 缺點:當CMS碎片話越來越嚴重的時候,CMS會使用SerialOld來清理老年代,也就是單執行緒並且stw.
不分代
g1
g1 (三色標記法,標記清理演算法) 和CMS類似。對三色標記法的解決方案不一樣,適合大記憶體。比如堆大於6-8G
G1解決方案:SATB :灰色物件指定的標記消失的時候,會把這個引用標記推到GC的堆疊,保證GC掃描能再次掃描到,再次掃描只需要掃描那些region引用到該region。但是佔空間,region種還有百分之20左右記錄著誰引用的我。 缺點:空間佔用資源大。
zgc
(jdk11 使用的顏色指標來判斷該物件的狀態,使用了讀屏障)
每一個引用在64位機器上佔用的都是64位,在ZGC使用引用的時候只用了其中的42位,來代表指向某個物件的真正地址,高18位沒用,中間有4位代表指向的這個物件的狀態 Zgc能管理4T的記憶體(2的42次方),最大能管理16T的記憶體(2的44次方)。
Shenandoah (jdk11)
使用了讀屏障,轉發指標
Epsilon
( 只做記憶體分配而不做記憶體回收(reclaim) )
相關文章
- GC垃圾回收器GC
- Unity GC垃圾回收UnityGC
- GC 分代回收 - 垃圾收集器GC
- [Inside HotSpot] Serial垃圾回收器Full GCIDEHotSpotGC
- [Inside HotSpot] Serial垃圾回收器 (二) Minor GCIDEHotSpotGC
- 【JVM】垃圾回收器總結(2)——七種垃圾回收器型別JVM型別
- 託管堆和垃圾回收(GC)GC
- .Net平臺的GC垃圾回收GC
- 聊聊JVM的垃圾回收機制GCJVMGC
- 秋招乾貨 - JVM 垃圾回收(GC)JVMGC
- Java 22中三種垃圾回收GC效能獲得了大提升JavaGC
- JVM學習(二)——GC垃圾回收機制JVMGC
- JDK 18 GC垃圾回收機制比較JDKGC
- 【JVM第八篇--垃圾回收】GC和GC演算法JVMGC演算法
- JVM垃圾回收——新生代,老年代,永久代,Minor GC,Full GCJVMGC
- java學習筆記-4 JVM垃圾回收(GC)Java筆記JVMGC
- JVM 垃圾回收演算法和垃圾回收器JVM演算法
- 7種jvm垃圾回收器,這次全部搞懂JVM
- JVM垃圾回收器JVM
- Java虛擬機器-GC垃圾回收演算法-引用計數法Java虛擬機GC演算法
- 【Android面試-Java-V05】Java GC 垃圾回收Android面試JavaGC
- 為什麼GC(垃圾回收)必須stop-the-world?GC
- NodeJS V8引擎的記憶體和垃圾回收器(GC)NodeJS記憶體GC
- Java虛擬機器-GC垃圾回收演算法-判定一個物件是否是可回收的物件Java虛擬機GC演算法物件
- 十、jvm垃圾回收演算法、垃圾收集器、引用你真的瞭解麼?JVM演算法
- 垃圾回收演算法|GC標記-清除演算法演算法GC
- JS 垃圾回收的兩種方式JS
- 垃圾回收(三)【垃圾回收通知】
- JVM必備基礎知識(三)-- GC垃圾回收機制JVMGC
- 深入理解Java的垃圾回收機制(GC)實現原理JavaGC
- 理解JVM(七):垃圾回收器JVM
- 垃圾回收器總結(一)
- 垃圾回收(一)【垃圾回收的基礎】
- Java gc(垃圾回收機制)小結,以及Android優化建議JavaGCAndroid優化
- Python垃圾回收(GC)三層心法,你瞭解到第幾層?PythonGC
- 面試官,不要再問我“Java GC垃圾回收機制”了面試JavaGC
- JVM系列(六) - JVM垃圾回收器JVM
- 深入探究JVM之垃圾回收器JVM