<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JVM垃圾回收算法你都知道嗎?

          共 2013字,需瀏覽 5分鐘

           ·

          2021-02-02 04:02

          Python實戰(zhàn)社群

          Java實戰(zhàn)社群

          長按識別下方二維碼,按需求添加

          掃碼關(guān)注添加客服

          進(jìn)Python社群▲

          掃碼關(guān)注添加客服

          進(jìn)Java社群


          作者丨java金融

          來源丨java金融

          怎么判斷對象"已死"?

          1.引用計數(shù)法

          不能解決對象循環(huán)依賴的問題。因此一般不用這種。

          2.可達(dá)性分析算法。

          GCRoots 不可達(dá)時 對象死,采用這個。

          垃圾收集算法

          1.標(biāo)記清除算法

          1.標(biāo)記、清除階段效率不高。

          2.標(biāo)記清除之后會產(chǎn)生大量不連續(xù)的碎片,導(dǎo)致分配較大的對象時候,無法找到足夠的連續(xù)內(nèi)存。

          2.復(fù)制算法

          1.兩塊相同的內(nèi)存空間,一塊使用,一塊空閑,導(dǎo)致空間浪費。不存在碎片問題。

          3.記整理算法

          1.標(biāo)記過程與"標(biāo)記清除算法"一樣,整理過程是讓所有存活對象都往一端移動,然后直接清理掉邊界以外的內(nèi)存。

          4.分代收集算法。

          把對象進(jìn)行分代,新生代和來年代。

          總結(jié)

          新生代一般用復(fù)制算法,老年代一般用標(biāo)記整理或者標(biāo)記清除算法。

          垃圾收集器

          1. Serial收集器

          2. 作用于新生代

          3. 單線程收集

          4. 采用復(fù)制算法

          5. 開啟方式:-XX:+UseSerialGC

          6. Client模式下的默認(rèn)新生代收集器。進(jìn)行垃圾收集時,必須Stop the world,直到它收集結(jié)束

          7. ParNew收集器

          8. 作用于新生代。

          9. 多線程收集

          10. 采用復(fù)制算法

          11. -XX:+UseParNewGC-XX:ParallelGCThreans=2(2指定垃圾收集的線程數(shù))

          12. Server模式下的默認(rèn)新生代收集器

          13. ParallelScavenge收集器

          14. 新生代

          15. 多線程

          16. 復(fù)制算法

          17. -XX:MaxGCPauseMillis控制最大垃圾收集時間 -XX:GCTimeRatio 控制吞吐量大小

          18. 吞吐量優(yōu)先收集器目標(biāo):控制吞吐量吞吐量=運行用戶代碼時間/(運行用戶代碼時間+垃圾收集時間)吞吐量越高說明CPU時間利用率越高。

          19. SerialOld收集器

          20. 老年代

          21. 單線程

          22. 標(biāo)記整理算法

          23. 這個收集器的主要意義也是在于給Client模式下的虛擬機使用。如果在Server模式下,主要兩大用途:1.在JDK1.5以及之前的版本中與ParallelScavenge收集器搭配使用。2.作為CMS收集器的后備預(yù)案,在并發(fā)收集發(fā)生Concurrent Mode Failure時使用

          24. ParallelOld收集器

          25. 老年代

          26. 多線程

          27. 標(biāo)記整理

          28. ParallelOld是ParallelScavenge收集器的老年代版本。這個收集器在1.6中才開始提供。在JDK1.5以及之前的版本中,Parallel Scavenge+Serial Old(單線程),無法充分利用多CPU的處理能力。1.6之后,終于有了名副其實的"吞吐量優(yōu)先"收集器組合:Parallel Scavenge + Parallel Old。

          29. CMS

          30. 老年代

          31. 多線程

          32. 標(biāo)記清除算法

          33. -XX:+UseConcMarkSweepGC新生代使用了PartNew

          CMS在老年代的整個過程分為4個步驟:

          1.初始標(biāo)記stop the word 僅僅標(biāo)記GC Roots能直接關(guān)聯(lián)到的對象,速度很快

          2.并發(fā)標(biāo)記進(jìn)行GCRoots Tracing的過程(判斷對象是否仍在使用中)和用戶線程一起工作。3.重新標(biāo)記stop the word 修正并發(fā)標(biāo)記階段因用戶程序繼續(xù)運行而導(dǎo)致標(biāo)記發(fā)生變動的那一部分標(biāo)記記錄。此階段比初始標(biāo)記階段稍長,但遠(yuǎn)比并發(fā)標(biāo)記階段的時間短。

          4.并發(fā)清除 和用戶線程一起工作。

          G1 收集器

          內(nèi)存組成:Eden、 Survivor、 Old、 Humongous

          內(nèi)存變化:字符串內(nèi)部池,已經(jīng)在JDK7中從永久代中移除,JDK1.7中,存儲在永久代的部分?jǐn)?shù)據(jù)就已經(jīng)轉(zhuǎn)移到了JavaHeap或者是NativeHeap。但永久代仍存在于JDK1.7中,并沒完全移除,譬如符號引用(Symbols)轉(zhuǎn)移到了native heap;字面量(internedstrings)轉(zhuǎn)移到了javaheap;類的靜態(tài)變量(classstatics)轉(zhuǎn)移到了java heap持久代也移動到了普通的堆內(nèi)存空間中,改為元空間 。

          大對象的分配

          1 TLAB(Thread Local Allocation Buffer)線程本地分配緩沖區(qū)

          2 Eden區(qū)中分配

          3 Humongous區(qū)分配

          GC模式

          G1提供了兩種Young GC和Mixed GC,兩種都是Stop The World(STW)

          程序員專欄
          ?掃碼關(guān)注填加客服?
          長按識別下方二維碼進(jìn)群

          近期精彩內(nèi)容推薦:??

          ?再見,戴威!再見,小黃車!

          ?別瞎學(xué)了,這幾門語言要被淘汰了!

          ?再見 Win10!下一代操作系統(tǒng)來了。。

          ?墻裂建議收藏,100道Python練手題目




          在看點這里好文分享給更多人↓↓

          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  麻豆蜜桃69无码专区 | 伊人av电影 | 大香蕉大香蕉最新视频97 | 欧美日韩A V | 超碰在線超碰免費 |