国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JVM:垃圾收集器(7種)

這篇具有很好參考價(jià)值的文章主要介紹了JVM:垃圾收集器(7種)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

垃圾收集器關(guān)系圖:

JVM:垃圾收集器(7種),jvm,java,算法

如果兩個(gè)收集器之間存在連線,就說明它們可以搭配使用。它們說在的區(qū)域則表示這個(gè)收集器屬于新生代收集器還是老年代收集器。其中Serial(串行)、Parallel(并行)

1、Serial收集器

? ? ? ? Serial收集器是最基礎(chǔ)、歷史最悠久的收集器,是HotSpot虛擬機(jī)新生代收集器的唯一選擇。這個(gè)收集器是一個(gè)單線程工作的收集器。這個(gè)收集器再進(jìn)行垃圾收集時(shí),必須停掉所有的工作線程,直到收集完成。這個(gè)停掉的工作是后臺(tái)自己執(zhí)行的,用戶并不知情。這個(gè)是我們無法接受的。

JVM:垃圾收集器(7種),jvm,java,算法

????????從上面的種種缺點(diǎn)看去似乎這個(gè)收集器已經(jīng)被時(shí)代拋棄,沒有優(yōu)點(diǎn)。但是它依舊是HotSpot虛擬機(jī)運(yùn)行再客戶端模式下默認(rèn)的新生代收集器。因?yàn)樗幸粋€(gè)很大的優(yōu)點(diǎn)簡(jiǎn)單而高效。再內(nèi)存環(huán)境受限的環(huán)境,它是所有收集器里面的額外內(nèi)存消耗最小的。一般來說分配給虛擬機(jī)管理的內(nèi)存一般不會(huì)特別大,對(duì)于幾十兆甚至一兩百兆的新生代,Serial垃圾收集器的停頓時(shí)間完全可以控制再可接受范圍。所以,?Serial收集器對(duì)于運(yùn)行在客戶端模式下的虛擬機(jī)來說是一個(gè)很好的選擇。

2、ParNew收集器

????????ParNew收集器實(shí)質(zhì)上是Serial收集器的多線程并行版本,出來可以同時(shí)多條線程進(jìn)行垃圾收集外,其余行為幾乎與Serial收集器一致。

JVM:垃圾收集器(7種),jvm,java,算法

? ? ? ? ?這個(gè)收集器明明沒有太大的創(chuàng)新為什么能有怎么重要的地位呢,那就是因?yàn)樗拇顧nCMS收集器。CMS第一款真正意義上支持并發(fā)的垃圾收集器,它首次 實(shí)現(xiàn)了讓垃圾收集線程與用戶線程同時(shí)工作。但這個(gè)收集器只能Serial和ParNew這兩個(gè)新生代收集器配合使用。這樣奠定了ParNew的地位。隨著G1收集器的產(chǎn)生,這一組合被逐漸取代,官方希望它能完全被G1所取代,ParNew和CMS從此只能互相搭配使用,再也沒有其他收集器能夠和它們配合了。也可以理解為從此以后,ParNew合并入CMS,成為它專門處理新生代的組成部分。ParNew可以說是HotSpot虛擬機(jī)中第一款退出歷史舞臺(tái)的垃圾收集器。

3、Parallel Scavenge收集器

????????Parallel Scavenge收集器是一款新生代收集器,它基于標(biāo)記復(fù)制算法實(shí)現(xiàn)。也是能夠并行收集的多線程收集器。它獨(dú)特的點(diǎn)在于它的注重點(diǎn)與其他收集器不同,CMS等收集器的關(guān)注點(diǎn)是盡可能的縮短垃圾收集時(shí)用戶線程的停頓時(shí)間,而Parallel Scavenge的注重點(diǎn)是一個(gè)可控的吞吐量。

JVM:垃圾收集器(7種),jvm,java,算法

注重停頓時(shí)間的垃圾收集器適合注重用戶良好體驗(yàn)的程序,而高吞吐量則是更高效的利用資源,盡快完成程序的運(yùn)算任務(wù),適合在后臺(tái)不需要過多交互的程序。

這個(gè)收集器提供了兩個(gè)參數(shù)用于精確控制吞吐量,分別是控制最大垃圾收集停頓時(shí)間 的-XX:MaxGCPauseMillis參數(shù)以及直接設(shè)置吞吐量大小的-XX:GCTimeRatio參數(shù)。 -XX:

4、Serial Old收集器

? ? ? ? Serial Old是Serial收集器的老年版本,它是一個(gè)單線程收集器,使用標(biāo)記整理算法。這個(gè)收集器的主要作用是再客戶端模式下的HotSpot虛擬機(jī)使用。再服務(wù)端下一種是JDK5即以前與ParallelScavenge收集器搭配使用,另一種就是作為CMS收集器發(fā)生失敗時(shí)的后背預(yù)案。

JVM:垃圾收集器(7種),jvm,java,算法

5、Parallel Old收集器

? ? ? ? parallel Old是parallel Scavenge收集器的老年版本,支持多線程并發(fā)收集,基于標(biāo)記整理算法實(shí)現(xiàn)。出現(xiàn)在JDK6后。當(dāng)注重吞吐量或者處理器資源稀缺的時(shí)候,都會(huì)優(yōu)先考慮? ? ? ? ? ? ? ? parallel Scavenge+Parallel Old收集器這個(gè)組合。

JVM:垃圾收集器(7種),jvm,java,算法

6、CMS收集器 (并發(fā)收集、低停頓)

????????CMS(Concurrent Mark Sweep)收集器是以獲取最短回收停頓時(shí)間的為目標(biāo)的收集器。注重服務(wù)的響應(yīng)速度,希望系統(tǒng)停頓時(shí)間盡可能短,以給用戶更好的交互體驗(yàn)。這個(gè)收集器是基于標(biāo)記清除算法實(shí)現(xiàn)的。用于老年代的收集。

收集過程有四個(gè)階段:1、初始標(biāo)記? ? ? ? 2、并發(fā)標(biāo)記? ? ? ? 3、重新標(biāo)記? ? ? ? 4、并發(fā)清除

????????四個(gè)階段中初始標(biāo)記重新標(biāo)記仍需要暫停所有的用戶線程(Stop The World),但為什么說這個(gè)收集器也暫停了所有的線程,為什么還能做到停頓時(shí)間短呢。因?yàn)?strong>初始標(biāo)記階段只是標(biāo)記GC Roots能直接關(guān)聯(lián)的對(duì)象,這個(gè)過程很快。而并發(fā)標(biāo)記時(shí)才進(jìn)行沿GC Roots遍歷所有對(duì)象,這個(gè)工作量說不小的,但這個(gè)過程并沒有停頓用戶線程,而是與其并發(fā)執(zhí)行,如果再過程出現(xiàn)對(duì)象引用關(guān)系改變,則使用增量更新的方法將其標(biāo)記。待重新標(biāo)記階段就是為了解決這個(gè)并發(fā)過程中因?yàn)楦淖兌粯?biāo)記的對(duì)象。這個(gè)階段是要暫停用戶線程的,但這部分的工作量也不大。最后全部標(biāo)記玩就進(jìn)入了并發(fā)清除的階段了。這部分也是與用戶線程并發(fā)進(jìn)行的。

從整體上看來耗時(shí)長的并發(fā)標(biāo)記和并發(fā)清除都沒有暫停用戶線程,所有可以說:從總體上來說,CMS收集器的內(nèi)存回收過程是與用戶線程一起并發(fā)執(zhí)行的。

JVM:垃圾收集器(7種),jvm,java,算法

缺點(diǎn):?

  1. CMS收集器對(duì)CPU資源很敏感。它雖然不會(huì)導(dǎo)致用戶線程停頓,但也會(huì)因?yàn)檎加靡徊糠志€程導(dǎo)致應(yīng)用程序變慢。它默認(rèn)啟動(dòng)的回收線程數(shù)是(核心線程數(shù)+3)/4,所以隨著核心線程數(shù)的降低,CMS收集器的弊端會(huì)越來越明顯。
  2. CMS是一款基于“標(biāo)記-清除”算法實(shí)現(xiàn)的收集器,這意味著收集結(jié)束時(shí)會(huì)有大量空間碎片產(chǎn)生??臻g 碎片過多時(shí),將會(huì)給大對(duì)象分配帶來很大麻煩,往往會(huì)出現(xiàn)老年代還有很多剩余空間,但就是無法找 到足夠大的連續(xù)空間來分配當(dāng)前對(duì)象,所以會(huì)提前導(dǎo)致Full GC的到來。
  3. CMS無法處理浮動(dòng)垃圾(再清除階段用戶線程還在運(yùn)行,產(chǎn)生的垃圾)。必須等到下次GC時(shí)才能清理,而且不能等到老年代滿了后再清理,因?yàn)樵偾謇磉^程中用戶線程還在產(chǎn)生對(duì)象,所以要預(yù)留一定內(nèi)存,提前開啟垃圾清理。

7、G1收集器(Garbage First)

? ? ? ? G1是一種“停頓時(shí)間模型”的收集器,它能指定時(shí)間N,確保消耗再垃圾收集上時(shí)間大概率不超過N毫秒的目的。G1收集器一改之前的分區(qū)收集思想,開創(chuàng)了面對(duì)局部收集的設(shè)計(jì)思路。它將java堆劃分為多個(gè)大小相等的獨(dú)立區(qū)域Region。它可以面對(duì)堆內(nèi)存任何部分組成回收集進(jìn)行回收。這個(gè)模型回收哪塊的衡量標(biāo)準(zhǔn)是哪塊Region垃圾最多,再N毫秒內(nèi)回收收益最大。這就是G1收集器的Mixed GC模式。

? ? ? ? 再并發(fā)操作階段,CMS收集器采用增量更新算法實(shí)現(xiàn),而G1 收集器則是通過原始快照(SATB)算法來實(shí)現(xiàn)的。

收集過程:

  1. 初始標(biāo)記:僅僅只是標(biāo)記一下GC Roots能直接關(guān)聯(lián)到的對(duì)象,需要暫停用戶線程,但耗時(shí)很短。
  2. 并發(fā)標(biāo)記:從GC Root開始對(duì)堆中對(duì)象進(jìn)行可達(dá)性分析,遞歸掃描整個(gè)堆 里的對(duì)象圖,找出要回收的對(duì)象,這階段耗時(shí)較長,但可與用戶程序并發(fā)執(zhí)行。當(dāng)對(duì)象圖掃描完成以 后,還要重新處理SATB記錄下的在并發(fā)時(shí)有引用變動(dòng)的對(duì)象。 ·
  3. 最終標(biāo)記:對(duì)用戶線程做另一個(gè)短暫的暫停,用于處理并發(fā)階段結(jié)束后仍遺留 下來的最后那少量的SATB記錄。 ·
  4. 篩選回收:負(fù)責(zé)更新Region的統(tǒng)計(jì)數(shù)據(jù),對(duì)各個(gè)Region的回 收價(jià)值和成本進(jìn)行排序,根據(jù)用戶所期望的停頓時(shí)間來制定回收計(jì)劃,可以自由選擇任意多個(gè)Region 構(gòu)成回收集,然后把決定回收的那一部分Region的存活對(duì)象復(fù)制到空的Region中,再清理掉整個(gè)舊 Region的全部空間。這里的操作涉及存活對(duì)象的移動(dòng),是必須暫停用戶線程,由多條收集器線程并行 完成的。

JVM:垃圾收集器(7種),jvm,java,算法

????????毫無疑問,可以由用戶指定期望的停頓時(shí)間是G1收集器很強(qiáng)大的一個(gè)功能,設(shè)置不同的期望停頓 時(shí)間,可使得G1在不同應(yīng)用場(chǎng)景中取得關(guān)注吞吐量和關(guān)注延遲之間的最佳平衡。當(dāng)然這個(gè)值也得是一個(gè)可能的值,要是太低了,就會(huì)導(dǎo)致每次回收不了多少,回收次數(shù)增加。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-807541.html

?

?

?

到了這里,關(guān)于JVM:垃圾收集器(7種)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JVM垃圾回收——G1垃圾收集器

    JVM垃圾回收——G1垃圾收集器

    目錄 一、什么是G1垃圾收集器 二、G1垃圾收集器的內(nèi)存劃分 三、G1垃圾收集器的收集過程 ?四、G1收集器的優(yōu)缺點(diǎn) 五、G1收集器的JVM參數(shù)配置 ????????Garbage First(簡(jiǎn)稱G1)收集器是垃圾收集器技術(shù)發(fā)展史上里程碑式的成果,它摒棄了傳統(tǒng)垃圾收集器的嚴(yán)格的內(nèi)存劃分,而是采

    2024年02月05日
    瀏覽(26)
  • 08-JVM垃圾收集器詳解

    08-JVM垃圾收集器詳解

    上一篇:07-垃圾收集算法詳解 如果說收集算法是內(nèi)存回收的方法論,那么垃圾收集器就是內(nèi)存回收的具體實(shí)現(xiàn)。 雖然我們對(duì)各個(gè)收集器進(jìn)行比較,但并非為了挑選出一個(gè)最好的收集器。因?yàn)橹钡浆F(xiàn)在為止還沒有最好的垃圾收集器出現(xiàn),更加沒有萬能的垃圾收集器,我們能做

    2024年02月09日
    瀏覽(31)
  • JVM--- 垃圾收集器詳細(xì)整理

    JVM--- 垃圾收集器詳細(xì)整理

    目錄 一、垃圾收集需要考慮的三個(gè)事情: 二、垃圾回收針對(duì)的區(qū)域 三、如何判斷對(duì)象已死 ? ? ? ? 1.引用計(jì)數(shù)算法: ? ? ? ? 2.可達(dá)性分析算法 四、引用 五、生存還是死亡? 六、回收方法區(qū) 七、垃圾收集算法 ? ? ? ? 1.分代收集理論 2.標(biāo)記-清除算法 ????????3.標(biāo)記

    2024年02月19日
    瀏覽(30)
  • 深入理解JVM垃圾收集器

    深入理解JVM垃圾收集器

    相關(guān)系列 深入理解JVM垃圾收集算法-CSDN博客 目前市面常見的垃圾收集器有Serial、ParNew、Parallel、CMS、Serial Old、Parallel Old、G1、ZGC以及有二種不常見的Epsilon、Shenandoah的,從上圖可以看到有連線的的垃圾收集器是可以組合使用,是年輕代+老年代。為什么會(huì)出現(xiàn)這么多的垃圾收集

    2024年04月09日
    瀏覽(24)
  • JVM:垃圾收集器(7種)

    JVM:垃圾收集器(7種)

    如果兩個(gè)收集器之間存在連線,就說明它們可以搭配使用。它們說在的區(qū)域則表示這個(gè)收集器屬于新生代收集器還是老年代收集器。其中Serial(串行)、Parallel(并行) ? ? ? ? Serial收集器是最基礎(chǔ)、歷史最悠久的收集器,是HotSpot虛擬機(jī)新生代收集器的唯一選擇。這個(gè)收集器

    2024年01月20日
    瀏覽(22)
  • JVM ZGC垃圾收集器

    JVM ZGC垃圾收集器

    ZGC(“Z”并非什么專業(yè)名詞的縮寫,這款收集器的名字就叫作Z Garbage Collector)是一款在JDK 11中新加入的具有實(shí)驗(yàn)性質(zhì)[1]的低延遲垃圾收集器,是由Oracle公司研發(fā)的。 ZGC收集器 是一款基于Region內(nèi)存布局的,(暫時(shí))不設(shè)分代的,使用了讀屏障、染色指針和內(nèi)存多重映射等技術(shù)

    2024年02月10日
    瀏覽(25)
  • JVM的故事——垃圾收集器

    JVM的故事——垃圾收集器

    新生代收集器,最基礎(chǔ)的收集器,單線程。進(jìn)行垃圾收集時(shí)必須暫停其他所有工作線程,stop the world 新生代收集器,實(shí)質(zhì)上是serial收集器的多線程版本。除了serial,只有它能和CMS收集器(老年代收集器)配合工作。隨著處理器核心數(shù)越來越多,parnew比serial有著更好的性能。(但如

    2024年02月10日
    瀏覽(30)
  • Java虛擬機(jī)(JVM)垃圾收集器、新生代、老年代、永久代以及內(nèi)存分配策略

    Java虛擬機(jī)(JVM)垃圾收集器、新生代、老年代、永久代以及內(nèi)存分配策略

    在 Java 中,堆被劃分成兩個(gè)不同的區(qū)域:新生代 ( Young )、老年代 ( Old )。而新生代 ( Young ) 又被劃分為三個(gè)區(qū)域:Eden、From Survivor、To Survivor。這樣劃分的目的是為了使 JVM 能夠更好的管理堆內(nèi)存中的對(duì)象,包括內(nèi)存的分配以及回收。 新生代中一般保存新出現(xiàn)的對(duì)象,所以每次

    2024年02月04日
    瀏覽(27)
  • ZGC垃圾收集器-JVM(十五)

    上篇文章說了G1的特性,無分代,復(fù)制算法,大內(nèi)存就可以用G1,可預(yù)測(cè)stw時(shí)間等特性。 G1垃圾收集分類-JVM(十四) ZGC收集器 -XX:+UseZGC ZGC(Z Garbage Collector)是在jdk11新加入的低延遲垃圾收集器。 Zgc有四個(gè)目標(biāo) : 支持至少TB級(jí)別堆內(nèi)存回收。(目前4TB) STW保持在10ms之內(nèi)。 吞

    2024年02月16日
    瀏覽(20)
  • G1垃圾收集器-JVM(十三)

    G1垃圾收集器-JVM(十三)

    上篇文章說了CMS垃圾收集器使用以及三色標(biāo)記如何解決cms的一些問題。分別有初始標(biāo)記,并發(fā)標(biāo)記,重新標(biāo)記,并發(fā)清理,并發(fā)重置。 CMS垃圾收集器三色標(biāo)記-JVM(十二) G1收集器(Garbage-First) -XX:+UseG1GC 這是一款面向服務(wù)器的垃圾收集器,主要針對(duì) 設(shè)備多核cpu和大內(nèi)存的機(jī)

    2024年02月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包