初始標記,標記gc roots直接關聯的物件,新增tams標記(兩個指標),stw
併發標記,從gc roots沿著引用關係查詢,如果使用者執行緒同時修改了引用關係,新增satb標記;此時的新物件分配到tams標記之外的區域;併發。
最終標記:處理satb標記,stw
篩選**:按照**價值進行**;對於乙個region:將tams區域之外的物件和區域內存活的物件複製到新region後,整塊region清除,stw。
注:如果記憶體**的速度趕不上記憶體分配的速度, g1收集器也要被迫凍結使用者執行緒執行,導致full gc而產生長時間「stop the world」。
G1收集器和ZGC收集器
不要把垃圾收集器的功能看的太單一,除了 垃圾之外,記憶體的組織 分配 管理等操作也是垃圾收集器的工作。有的垃圾收集器選擇分代設計,有的選擇不分代。垃圾收集器的效能主要從三方面考慮 停頓時間 吞吐量和記憶體占用 對於第二點,這三種目標無法同時滿足,乙個垃圾 器基本只能滿足其中的一到兩點。比如這篇筆記中...
JVM垃圾收集器之CMS收集器
cms concurrent mark sweep 收集器是一種以獲取最短 停頓時間為目標的收集器。1 cms使用的演算法 cms使用的演算法為 標記 清除 演算法 2 執行過程4步驟 a 初始標記 cms initial mark b 併發標記 cms concurrent mark c 重新標記...
JVM的垃圾收集器
parnew收集器 parnew相比serial,則是較多的執行在server模式下的虛擬機器中首選的新生代收集器。而且還有乙個重要的原因,除了serial外,目前只有他能與cms收集器 jdk1.5推出,是hotspot第一款真正意義上的併發收集器 搭配工作。parnew可以使用 xx paral...