0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

JVM入門(mén)之歷代垃圾回收器 1

jf_78858299 ? 來(lái)源:北洋洋洋 ? 作者:北洋 ? 2023-02-10 11:29 ? 次閱讀

分類

一,采用分代理念的垃圾回收器:

1.年輕代:Serial PartNew Parallel Scavenge

2.老年代:

CMS Serial Old(MSC) Parallel Old

二,不采用分代理念的垃圾回收器:

G1 ZGC Shenandoah

?

可搭配使用的各個(gè)收集器之間關(guān)系圖:

?

并行和并發(fā)

很多人經(jīng)常把這兩個(gè)搞混,當(dāng)然筆者剛開(kāi)始的時(shí)候也是傻傻分不清楚。其實(shí)只要記住并行說(shuō)的是GC 線程之間的關(guān)系,而并發(fā)說(shuō)的是GC和用戶線程之間的關(guān)系。

?

并行:同一時(shí)間有多條這樣的線程在協(xié)同工作,但是此時(shí)用戶線程是等待狀態(tài)

?

?

并發(fā):同一時(shí)間GC和用戶線程可以一起工作一起運(yùn)行。因此程序依然能夠響應(yīng)用戶線程的操作但是由于GC線程也占用了一部分系統(tǒng)資源,所以此時(shí)的用戶線程處理的效率會(huì)下降

?

年輕代垃圾回收器

Serial收集器

Serial收集器

特點(diǎn)

垃圾回收時(shí)需要STW,整個(gè)STW需要停止掉所有的用戶線程來(lái)保證回收過(guò)程中引用關(guān)系不會(huì)發(fā)生變化。

但是并不是說(shuō)垃圾回收的時(shí)候只會(huì)啟用一個(gè)回收線程,更準(zhǔn)確的描述應(yīng)該是 「同一時(shí)間只允許一個(gè)垃圾回收線程工作」 ,也就是 「不支持并行工作」 ,多個(gè)GC線程之間串行工作。

優(yōu)點(diǎn)

1.對(duì)于內(nèi)存資源受限的機(jī)器來(lái)說(shuō)比較友好:

由于回收時(shí)停止掉了所有的用戶線程,因此他不必維護(hù)那些: 「用戶線程和GC線程同時(shí)運(yùn)行的時(shí)候在回收過(guò)程中為了保證引用關(guān)系發(fā)生變化的額外內(nèi)存開(kāi)銷」 ;比如上一篇文章說(shuō)到的原始快照和增量更新。

2.而且由于GC線程不是并行的,所以沒(méi)有線程之間的交互;對(duì)于處理器內(nèi)核少(線程少)的機(jī)器來(lái)說(shuō),

?

第一點(diǎn)也就是線程串行執(zhí)行一個(gè)線程完了之后才能執(zhí)行下一個(gè)線程,而對(duì)于并行的來(lái)說(shuō)其實(shí)本質(zhì)上還是串行只不過(guò)各個(gè)線程間可以自由來(lái)回切換,所以需要對(duì)切換前后的資源進(jìn)行額外的保存等等因此并發(fā)涉及到的這部分線程交互開(kāi)銷對(duì)于該款串行執(zhí)行的GC線程時(shí)沒(méi)有的

?

圖示:

串行和并行

缺點(diǎn)

但是缺點(diǎn)也很明顯:回收過(guò)程中停止掉所有用戶線程,對(duì)用戶肯定是不能容忍的

PartNew收集器

PartNew收集器

特點(diǎn):

該款垃圾收集器和剛才講的第一個(gè)Serial收集器其實(shí)最大的不同就是GC Thread可以并行的區(qū)別。注意是 「并行」 ,之后講解的 「CMS」 才是可以實(shí)現(xiàn)GC Thread 「并發(fā)」 的收集器。

Parallel Scavenge收集器

特點(diǎn)

該款垃圾收集器同樣和PartNew收集器一樣,并行GC線程。只不過(guò)該款收集器重點(diǎn)是傾向于 「吞吐量」

老年代垃圾回收器

Serial Old收集器

Serial Old收集器

?

區(qū)別于Serial回收器只是回收算法的不同

?

Parallel Old收集器

Parallel Scavenge收集器的老年代版本,支持多線程 「并發(fā)」 收集。

組合

「吞吐量?jī)?yōu)先垃圾回收器組合」

新生代采用Parallel Scavenge收集器,老年代采用Parallel Old收集器

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • GC
    GC
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    17069
  • JVM
    JVM
    +關(guān)注

    關(guān)注

    0

    文章

    157

    瀏覽量

    12188
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    502

    瀏覽量

    19614
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    電子垃圾回收隱患:非法回收1噸獲利萬(wàn)元

    廣州市政協(xié)提交的一份調(diào)研報(bào)告顯示,非法回收作坊每處置1噸電子垃圾可獲利3000~10000元,報(bào)告建議,應(yīng)通過(guò)“誰(shuí)生產(chǎn),誰(shuí)承擔(dān)回收處理費(fèi)”等方式規(guī)范管理電子
    發(fā)表于 07-07 11:37 ?2127次閱讀

    固態(tài)硬盤(pán)垃圾回收方法

    由于NAND閃存的固有限制,寫(xiě)前擦除和擦除粒度較大,基于NAND Flash的固態(tài)硬盤(pán)(SSD)需要執(zhí)行垃圾回收以重用失效頁(yè)。然而垃圾回收帶來(lái)的高開(kāi)銷會(huì)顯著降低SSD的性能,也會(huì)直接影
    發(fā)表于 12-03 10:50 ?2次下載
    固態(tài)硬盤(pán)<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>方法

    Jvm垃圾回收機(jī)制及性能調(diào)優(yōu)實(shí)戰(zhàn)

    JVM中自動(dòng)檢測(cè)并移除不再使用的數(shù)據(jù)對(duì)象的這種機(jī)制稱為:垃圾回收,簡(jiǎn)稱GC。JVM通過(guò)使用垃圾收集
    發(fā)表于 04-03 14:31 ?2次下載

    帶顏色的JVM垃圾回收三色標(biāo)記法

    三色標(biāo)記法是一種垃圾回收法,它可以讓JVM不發(fā)生或僅短時(shí)間發(fā)生STW(Stop The World),從而達(dá)到清除JVM內(nèi)存垃圾的目的。
    的頭像 發(fā)表于 10-20 14:23 ?1573次閱讀

    詳解JVM垃圾回收算法和垃圾回收

    JVM 垃圾回收機(jī)制是對(duì)堆中沒(méi)有使用的對(duì)象進(jìn)行回收,那么判斷對(duì)象是否“存活”就至關(guān)重要。在判斷對(duì)象是否“存活”的方法中,我們會(huì)介紹引用計(jì)數(shù)算法和可達(dá)性分析法。
    的頭像 發(fā)表于 03-29 13:55 ?1439次閱讀
    詳解<b class='flag-5'>JVM</b>的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法和<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b><b class='flag-5'>器</b>

    JVM入門(mén)歷代垃圾回收 2

    很多人經(jīng)常把這兩個(gè)搞混,當(dāng)然筆者剛開(kāi)始的時(shí)候也是傻傻分不清楚。其實(shí)只要記住并行說(shuō)的是GC 線程之間的關(guān)系,而并發(fā)說(shuō)的是GC和用戶線程之間的關(guān)系
    的頭像 發(fā)表于 02-10 11:29 ?526次閱讀
    <b class='flag-5'>JVM</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>之</b><b class='flag-5'>歷代</b><b class='flag-5'>垃圾</b><b class='flag-5'>回收</b><b class='flag-5'>器</b> 2

    JVM入門(mén)關(guān)于GC的擴(kuò)展知識(shí)1

    本章主要是對(duì)上一篇文章講的垃圾回收機(jī)制的擴(kuò)展,垃圾回收其實(shí)本身是有很多可以優(yōu)化的點(diǎn)的,本章就進(jìn)行對(duì)這些優(yōu)化點(diǎn)進(jìn)行介紹。
    的頭像 發(fā)表于 02-10 11:35 ?523次閱讀
    <b class='flag-5'>JVM</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>之</b>關(guān)于GC的擴(kuò)展知識(shí)<b class='flag-5'>1</b>

    JVM入門(mén)關(guān)于GC的擴(kuò)展知識(shí)2

    本章主要是對(duì)上一篇文章講的垃圾回收機(jī)制的擴(kuò)展,垃圾回收其實(shí)本身是有很多可以優(yōu)化的點(diǎn)的,本章就進(jìn)行對(duì)這些優(yōu)化點(diǎn)進(jìn)行介紹。
    的頭像 發(fā)表于 02-10 11:35 ?529次閱讀
    <b class='flag-5'>JVM</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>之</b>關(guān)于GC的擴(kuò)展知識(shí)2

    JVM入門(mén)垃圾回收算法

    根據(jù)如何判定對(duì)象是垃圾,垃圾回收算法分為兩類:1、 「引用計(jì)數(shù)式垃圾收集」 (判定垃圾是通過(guò)引用
    的頭像 發(fā)表于 02-10 11:40 ?733次閱讀
    <b class='flag-5'>JVM</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>之</b><b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法

    詳細(xì)解析JVM中的垃圾回收機(jī)制

    Java語(yǔ)言的一大優(yōu)勢(shì)在于其具有自動(dòng)垃圾回收(Garbage Collection,GC)機(jī)制,讓開(kāi)發(fā)者無(wú)需關(guān)心內(nèi)存的分配與釋放。
    的頭像 發(fā)表于 06-06 16:53 ?1918次閱讀

    垃圾收集JVM參數(shù)配置

    本篇文章我們就來(lái)給大家介紹垃圾收集JVM 參數(shù)配置。 JVM參數(shù)有很多,其實(shí)我們直接使用默認(rèn)的JVM參數(shù),不去修改都可以滿足大多數(shù)情況
    的頭像 發(fā)表于 10-09 16:35 ?502次閱讀
    <b class='flag-5'>垃圾</b>收集<b class='flag-5'>器</b>的<b class='flag-5'>JVM</b>參數(shù)配置

    jvm參數(shù)的設(shè)置和jvm調(diào)優(yōu)

    。 -XX:SurvivorRatio:設(shè)置Eden區(qū)與Survivor區(qū)的大小比例。 -XX:MaxPermSize:設(shè)置永久代的大小。 垃圾回收參數(shù)
    的頭像 發(fā)表于 12-05 11:36 ?1252次閱讀

    jvm配置的mx

    用于設(shè)置JVM的最大堆內(nèi)存大小,即堆的上限。當(dāng)堆內(nèi)存不足時(shí),JVM會(huì)觸發(fā)垃圾回收機(jī)制以釋放內(nèi)存。如果垃圾
    的頭像 發(fā)表于 12-05 14:24 ?634次閱讀

    智能垃圾回收箱控制系統(tǒng)硬件設(shè)計(jì)

    身份識(shí)別;身份驗(yàn)證后,控制啟動(dòng)電機(jī)打開(kāi)回收門(mén),持續(xù)開(kāi)啟7秒;用戶投放垃圾后,回收門(mén)自動(dòng)關(guān)閉。超聲波模塊檢測(cè)桶內(nèi)垃圾容量,超過(guò)設(shè)定值時(shí),控制
    的頭像 發(fā)表于 04-13 08:10 ?718次閱讀
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱控制系統(tǒng)硬件設(shè)計(jì)

    從原理聊JVM(一):染色標(biāo)記和垃圾回收算法

    更好地優(yōu)化自己的代碼,并解決一些潛在的性能問(wèn)題。 本文及后續(xù)文章將從原理聊起,對(duì)JVM的內(nèi)存分配、GC、編譯等知識(shí)進(jìn)行分析和總結(jié)。 1 JVM運(yùn)行時(shí)內(nèi)存劃分 1.1 運(yùn)行時(shí)數(shù)據(jù)區(qū)域 ?? ? ? 方法區(qū) 屬于共享內(nèi)存區(qū)域,存儲(chǔ)已
    的頭像 發(fā)表于 08-20 15:25 ?139次閱讀
    從原理聊<b class='flag-5'>JVM</b>(一):染色標(biāo)記和<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法