• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    Java面試之JVM復習(三)

    本篇主要講垃圾收集與算法。GC要做的三件事:如何確定垃圾,什么時候回收,怎么回收

    方式/步調

    1. 1

      若何確定垃圾之引用計數法

    2. 2

      若何確定垃圾之可達性闡發法,為領會決引用計數法中輪回引用問題,java利用了可達性闡發法,經由過程一系列的GC roots對象作為起點搜刮。

    3. 3

      標識表記標幟斷根算法:最根本的垃圾收受接管算法,分為兩個階段,標注和斷根。標識表記標幟階段會標識表記標幟出所有需要收受接管的對象,斷根階段收受接管被標識表記標幟的對象所占用的空間,如圖所示,從圖中我們可以看到,該算法最大的問題是內存碎片化嚴重,后續可能會發生大對象找不到可操縱的空間。

    4. 4

      復制算法:為領會決標識表記標幟斷根算法內存碎片化的缺陷而被提出的算法。按內存容量將內存劃分為等巨細的兩塊。每次只利用此中一塊,當這一塊內存滿后將尚存活的對象復制到另一塊去,把已利用的內存清失落,如圖所示。這種算法固然實現簡單,內存效率高,不易發生碎片,可是最大的問題是可用內存被壓縮到了本來的一半。且存活對象增多的話,copying算法的效率會大大降低。

    5. 5

      標識表記標幟清算算法:連系了以上兩個算法,為了避免缺陷而提出。標識表記標幟階段和標識表記標幟斷根算法不異,分歧的是標識表記標幟后不是清理對象,而是將存活對象移標的目的內存的一端。然后斷根可收受接管對象。如圖:

    6. 6

      分代收集算法是今朝大部門JVM所采用的方式,其焦點思惟是按照對象存活的分歧生命周期劃分為分歧的域,一般環境下將GC堆劃分為新生代和老年月。老年月的特點是每次垃圾收受接管時只有少量對象需要被收受接管,新生代的特點是每次垃圾收受接管時都有大量的垃圾需要被收受接管,是以可以按照分歧區域選擇分歧的算法。

      END
    • 發表于 2020-04-30 19:00
    • 閱讀 ( 655 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    admin
    admin

    0 篇文章

    作家榜 ?

    1. xiaonan123 189 文章
    2. 湯依妹兒 97 文章
    3. luogf229 46 文章
    4. jy02406749 45 文章
    5. 小凡 34 文章
    6. Daisy萌 32 文章
    7. 我的QQ3117863681 24 文章
    8. 華志健 23 文章

    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆