jvm垃圾收集器介紹

2022-09-15 12:12:10 字數 2181 閱讀 1320

以上是 虛擬機器中的 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.產生大量碎片化空間,導致記憶體不連續,無法為大物件分配空間。標記 複製 將記憶體分為兩塊,每次只使用一塊,當這塊記憶體用完了,就將還...