国产精品免费嫩草研究院|无遮羞动漫在线观看AV|国产麻豆精品传媒AV国产在线|村在线观看|寂寞情人1正版|韩国床震韩国床震古|精品系列专区久久

圖文超詳解 G1 垃圾收集器深入剖析


圖文超詳解 G1 垃圾收集器深入剖析

文章插圖
G1(Garbage First)垃圾收集器是目前垃圾回收技術(shù)最前沿的成果之一 。
G1 同 CMS 垃圾回收器一樣,關(guān)注最小時(shí)延的垃圾回收器,適合大尺寸堆內(nèi)存的垃圾收集 。但是,G1 最大的特點(diǎn)是引入分區(qū)的思路,弱化了分代的概念,合理利用垃圾收集各個(gè)周期的資源,解決了其他收集及 CMS 的很多缺陷 。
官方推薦使用 G1 來(lái)代替 CMS 。
通過(guò)本篇,我們可以了解掌握 G1 收集器的基本概念、堆內(nèi)存、回收流程、GC模式、推薦用例等核心知識(shí) 。
圖文超詳解 G1 垃圾收集器深入剖析

文章插圖
目錄
  • G1 收集器概述
  • G1 的堆內(nèi)存算法
    • 1. G1 之前的 JVM 內(nèi)存模型
    • 2. G1收集器的內(nèi)存模型
  • G1回收流程
    • 1. G1 收集器的階段(步驟)
  • G1 的 GC 模式
    • 1. YoungGC 年輕代收集
    • 2. mixed gc
  • G1 的推薦用例
G1 收集器概述HotSpot 團(tuán)隊(duì)一直努力朝著高效收集、減少停頓 (STW: Stop The World) 的方向努力,貢獻(xiàn)了從串行 Serial 收集器、到并行收集器 Parallerl 收集器,再到 CMS 并發(fā)收集器,乃至如今的 G1 在內(nèi)的一系列優(yōu)秀的垃圾收集器 。
G1(Garbage First) 垃圾收集器,是關(guān)注最小時(shí)延的垃圾回收器,也同樣適合大尺寸堆內(nèi)存的垃圾收集,官方推薦選擇使用 G1 來(lái)替代 CMS。
1.  G1 收集器的最大特點(diǎn)
  • G1最大的特點(diǎn)是引入分區(qū)的思路,弱化了分代的概念 。
  • 合理利用垃圾收集各個(gè)周期的資源,解決了其他收集器、甚至 CMS 的眾多缺陷 。
2.  G1 的改進(jìn)(相比較 CMS ) 
  • 算法: G1 基于標(biāo)記--整理算法, 不會(huì)產(chǎn)生空間碎片,在分配大對(duì)象時(shí),不會(huì)因無(wú)法得到連續(xù)的空間,而提前觸發(fā)一次 FULL GC。
  • 停頓時(shí)間可控: G1可以通過(guò)設(shè)置預(yù)期停頓時(shí)間(Pause Time)來(lái)控制垃圾收集時(shí)間避免應(yīng)用雪崩現(xiàn)象 。
  • 并行與并發(fā):G1 能更充分的利用 CPU 多核環(huán)境下的硬件優(yōu)勢(shì),來(lái)縮短 stop the world 的停頓時(shí)間 。
3. CMS 和 G1 的區(qū)別
  • CMS 中,堆被分為 PermGen,YoungGen,OldGen ;而 YoungGen 又分了兩個(gè) survivo 區(qū)域 。在 G1 中,堆被平均分成幾個(gè)區(qū)域 (region),在每個(gè)區(qū)域中,雖然也保留了新老代的概念,但是收集器是以整個(gè)區(qū)域?yàn)閱挝皇占?。
  • G1 在回收內(nèi)存后,會(huì)立即同時(shí)做合并空閑內(nèi)存的工作;而 CMS,則默認(rèn)是在 STW(stop the world)的時(shí)候做 。
  • G1 會(huì)在 Young GC 中使用;而 CMS 只能在 O 區(qū)使用 。
4.  G1 收集器的應(yīng)用場(chǎng)景目前,CMS 還是默認(rèn)首選的 GC 策略 。
G1 垃圾收集算法,主要應(yīng)用在多 CPU 大內(nèi)存的服務(wù)中,在滿足高吞吐量的同時(shí),盡可能的滿足垃圾回收時(shí)的暫停時(shí)間 。
在以下場(chǎng)景中,G1 更適合:
  • 服務(wù)端多核 CPU、JVM 內(nèi)存占用較大的應(yīng)用(至少大于4G);
  • 應(yīng)用在運(yùn)行過(guò)程中,會(huì)產(chǎn)生大量?jī)?nèi)存碎片、需要經(jīng)常壓縮空間;
  • 想要更可控、可預(yù)期的 GC 停頓周期,防止高并發(fā)下應(yīng)用雪崩現(xiàn)象 。
G1 的堆內(nèi)存算法1.  G1 之前的 JVM 內(nèi)存模型
圖文超詳解 G1 垃圾收集器深入剖析

文章插圖
  • 新生代:伊甸園區(qū) (eden space) + 2個(gè)幸存區(qū)
  • 老年代
  • 持久代 (perm space):JDK1.8 之前
  • 元空間 (metaspace):JDK1.8 之后取代持久代
2. G1收集器的內(nèi)存模型
圖文超詳解 G1 垃圾收集器深入剖析

文章插圖
2.1  G1 堆內(nèi)存結(jié)構(gòu)堆內(nèi)存會(huì)被切分成為很多個(gè)固定大小區(qū)域(Region),每個(gè)是連續(xù)范圍的虛擬內(nèi)存 。

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀