以上是 虛擬機器中的 7 個垃圾收集器,連線表示垃圾收集器可以配合使用。
是 serial 收集器的老年代版本,也是給 client 模式下的虛擬機器使用。如果用在 server 模式下,它有兩大用途:
是 parallel sc**enge 收集器的老年代版本。
cms(concurrent mark sweep),mark sweep 指的是標記 - 清除演算法。
特點:併發收集、低停頓。併發指的是使用者執行緒和 gc 執行緒同時執行。
分為以下四個流程:
在整個過程中耗時最長的併發標記和併發清除過程中,收集器執行緒都可以與使用者執行緒一起工作,不需要進行停頓。
具有以下缺點:
g1(garbage-first),它是一款面向服務端應用的垃圾收集器,在多 cpu 和大記憶體的場景下有很好的效能。hotspot 開發團隊賦予它的使命是未來可以替換掉 cms 收集器。
j**a 堆被分為新生代、老年代和永久代,其它收集器進行收集的範圍都是整個新生代或者老生代,而 g1 可以直接對新生代和永久代一起**。
g1 把新生代和老年代劃分成多個大小相等的獨立區域(region),新生代和永久代不再物理隔離。
通過引入 region 的概念,從而將原來的一整塊記憶體空間劃分成多個的小空間,使得每個小空間可以單獨進行垃圾**。這種劃分方法帶來了很大的靈活性,使得可**的停頓時間模型成為可能。通過記錄每個 region 垃圾**時間以及**所獲得的空間(這兩個值是通過過去**的經驗獲得),並維護乙個優先列表,每次根據允許的收集時間,優先**價值最大的 region。
每個 region 都有乙個 remembered set,用來記錄該 region 物件的引用物件所在的 region。通過使用 remembered set,在做可達性分析的時候就可以避免全堆掃瞄。
如果不計算維護 remembered set 的操作,g1 收集器的運作大致可劃分為以下幾個步驟:
具備如下特點:
收集器序列/並行/併發
新生代/老年代
收集演算法
目標適用場景
serial
序列新生代
複製響應速度優先
單 cpu 環境下的 client 模式
serial old
序列老年代
標記-整理
響應速度優先
單 cpu 環境下的 client 模式、cms 的後備預案
parnew
序列 + 並行
新生代複製演算法
響應速度優先
多 cpu 環境時在 server 模式下與 cms 配合
parallel sc**enge
序列 + 並行
新生代複製演算法
吞吐量優先
在後台運算而不需要太多互動的任務
parallel old
序列 + 並行
老年代標記-整理
吞吐量優先
在後台運算而不需要太多互動的任務
cms並行 + 併發
老年代標記-清除
響應速度優先
集中在互聯**或 b/s 系統服務端上的 j**a 應用
g1並行 + 併發
新生代 + 老年代
標記-整理 + 複製演算法
響應速度優先
面向
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...
JVM之垃圾收集器
垃圾 演算法 標記 清除 先標記後統一清除 缺點 1.執行效率不穩定 表現在假設j a堆中存在大量需要被 物件,此時標記 清除操作執行效率隨著物件的數量增加而降低 2.產生大量碎片化空間,導致記憶體不連續,無法為大物件分配空間。標記 複製 將記憶體分為兩塊,每次只使用一塊,當這塊記憶體用完了,就將還...