日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM - 再聊GC垃圾收集算法及垃圾收集器

發布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM - 再聊GC垃圾收集算法及垃圾收集器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Pre
  • 分代收集理論
  • 常見的垃圾收集算法
    • 標記-清除算法
    • 標記-復制算法
    • 標記-整理算法
  • 垃圾收集器
    • Serial收集器
    • Parallel Scavenge收集器 【JDK8默認】
    • ParNew收集器
    • CMS 【重點掌握】

Pre

JVM-04垃圾收集Garbage Collection(上)【垃圾對象的判定】

JVM-05垃圾收集Garbage Collection(中)【垃圾收集算法】

JVM-06垃圾收集Garbage Collection(下)【垃圾收集器】


分代收集理論

當前虛擬機的垃圾收集都采用分代收集算法 , 意思就是根據對象存活周期的不同將 java堆分為新生代和老年代,這樣就可以根據各個年代的特點選擇合適的垃圾收集算法。

舉個例子,新生代中,大部分對象都是朝生夕死的,所以可以選擇復制算法, 只復制那些少量存活的對象。

而老年代,絕大部分都是一些頑固的對象,存貨周期較長,如果選擇復制算法,就要復制很多對象,效率自然不高 ,所以得換個算法,通常會選擇標記-清除”或“標記-整理”算法進行垃圾收集。


常見的垃圾收集算法


標記-清除算法

兩個階段 “標記” + “清除”

  • 標記存活的對象, 也可以反過來,標記出所有需要回收的對象
  • 標記完成后,統一回收所有未被標記的對象(一般選擇這種)
  • 存在兩個問題

  • 如果需要標記的對象太多,效率不高 【效率問題】
  • 標記清除后會產生大量不連續的碎片 【內存碎片】
  • 基于這個缺點,進化除了 標記-整理 ,多了一步整理內存碎片。


    標記-復制算法

    它將內存分為大小相同的兩塊,每次使用其中的一塊。

    當這一塊的內存使用完后,就將還存活的對象復制到另一塊去,然后再把使用的空間一次清理掉。

    這樣就使每次的內存回收都是對內存區間的一半進行回收。

    • 優點:常用于新生代,存活的對象少,復制這些存活的對象,效率高。

    • 缺點 顯而易見: 浪費空間


    標記-整理算法

    根據老年代的特點演化出一種標記算法, 標記過程同“標記-清除” 。

    移動所有存活的對象,且按照內存地址次序依次排列,然后將末端內存地址以后的內存全部回收。因此,第二階段才稱為整理階段。


    垃圾收集器

    為什么會有這么多GC 回收器?

    因為目前沒有任何一款是十分完美的,我們需要做的就是充分了解這些GC Collector 根據業務特點選擇合適的GC Collector 。


    Serial收集器

    兩個收集器 。一個 新生代Serial , 一個 老年代 Serial Old .

    新生代采用復制算法,老年代采用標記-整理算法。

    JVM參數

    -XX:+UseSerialGC (新生代) -XX:+UseSerialOldGC (老年代)

    Serial(串行)收集器是最基本、歷史最悠久的垃圾收集器 。

    字面意思:

  • 單線程GC
  • GC的時候STW
  • 新生代 Serial , 復制算法
  • 老年代Serial Old , 標記整理算法
  • Serial Old收集器是Serial收集器的老年代版本,也是一個單線程收集器。

    它主要有兩大用途:

    • 一種用途是在JDK1.5以及以前的版本中與Parallel Scavenge收集器搭配使用,
    • 另一種用途是作為CMS收集器的后備方案

    Parallel Scavenge收集器 【JDK8默認】

    Serial收集器的多線程版本

    JVM參數

    -XX:+UseParallelGC(年輕代),-XX:+UseParallelOldGC(老年代)

    默認的收集線程數跟cpu核數相同,當然也可以用參數(-XX:ParallelGCThreads)指定收集線程數,但是一般不推薦修改。

    Parallel Scavenge收集器關注點是吞吐量(高效率的利用CPU)

    CMS等垃圾收集器的關注點更多的是用戶線程的停頓時間(提高用戶體驗)

    新生代采用復制算法,老年代采用標記-整理算法。

    Parallel Old收集器是Parallel Scavenge收集器的老年代版本。使用多線程和“標記-整理”算法。

    在注重吞吐量以及CPU資源的場合,都可以優先考慮 Parallel Scavenge收集器和Parallel Old收集器(JDK8默認的新生代和老年代收集器)。


    ParNew收集器

    What ? ParNew ? 不是有個Parallel 嗎? 又出來這個主要是因為Parallel 不能和CMS搭配使用,所以官方又弄出個這么個玩意兒。

    JVM參數

    -XX:+UseParNewGC

    ParNew收集器其實跟Parallel收集器很類似,區別主要在于它可以和CMS收集器配合使用。

    新生代采用復制算法,老年代采用標記-整理算法。

    互聯網公司 小內存的機器 主流的GC組合 就是 ParNew + CMS .


    CMS 【重點掌握】

    JVM參數

    -XX:+UseConcMarkSweepGC(老年代)

    詳細的四個步驟、CMS存在的問題以及三色標記我們下篇博文繼續展開

    總結

    以上是生活随笔為你收集整理的JVM - 再聊GC垃圾收集算法及垃圾收集器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品成人无码 | 欧洲中文字幕日韩精品成人 | 久久久久亚洲av片无码下载蜜桃 | www网站在线免费观看 | 精品无码一区二区三区蜜臀 | 99久久婷婷 | 青在线视频| 欧美日韩性生活 | 免费国产黄 | 成人久久 | 国产精品久久久久高潮 | 无码一区二区三区免费视频 | 国产精品夜夜躁视频 | 天天看天天色 | 欧美日韩国产一区二区三区在线观看 | 精品国产乱码久久久久久闺蜜 | 国产成人一区二区三区视频 | 国产精品字幕 | 国产精品视频一二三 | 久久久久久久久久99精品 | 少妇激情一区二区三区 | 天堂在线成人 | 91网址在线 | 嫩草影院懂你的 | 国内偷拍精品视频 | аⅴ资源天堂资源库在线 | 精人妻一区二区三区 | 精品久久久久久久久久久久久久久久 | 亚洲影院在线播放 | 色综合图片区 | аⅴ天堂中文在线网 | 日韩avxxx | 午夜寻花 | av中字| 欧美成人精品激情在线视频 | 精品无码一级毛片免费 | 手机av片 | gav成人| 制服丝袜国产精品 | av在线专区 | www.色婷婷.com | 国产做受高潮漫动 | 韩国一级一片高清免费观看 | 亚洲国产视频在线 | 亚洲三级免费 | 中文字幕在线视频精品 | 日韩在线观看网址 | 精品国产aⅴ| 婷婷欧美| 在线视频一二区 | www.久久艹| 九九视频免费在线观看 | 蜜桃久久久aaaa成人网一区 | 久久久久久夜 | 美女被日网站 | 最近中文字幕免费 | 无码人妻精品中文字幕 | 婷婷深爱网 | 五月亚洲综合 | 色男人天堂av | 加勒比一区二区 | 深夜视频在线看 | 91国产在线播放 | 久久久免费观看视频 | 成人看片网 | 色天天综合网 | 亚洲自拍偷拍综合 | 成人在线观看视频网站 | 国产麻豆精品一区二区 | 天天干,天天操 | 天天狠天天插 | 亚洲制服一区二区 | 五十路中出 | 丝袜美腿亚洲综合 | 久久国产精品一区二区 | 老司机综合网 | 免费黄色av网址 | 日韩在线免费视频观看 | 黑人玩弄人妻一区二区绿帽子 | 91国产精品 | 精品黑人一区二区三区观看时间 | 黄色在线观看国产 | 黄色录像片子 | 免费小视频在线观看 | 亚洲精品一区二区三区新线路 | 超碰1997| 精品一区二区在线视频 | 国产精品一区二区三区久久 | 日本丰满少妇一区二区三区 | 色香蕉网站 | 国产福利免费 | 韩国av一区 | 7777久久亚洲中文字幕 | 99久久精品无码一区二区毛片 | 成人亚洲玉足脚交系列 | 亚洲熟妇一区二区三区 | av中文字幕第一页 | 国产片淫乱18一级毛片动态图 | 久久精品视屏 |