日韩性视频-久久久蜜桃-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垃圾收集算法及垃圾收集器的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 欧美操老女人 | 在线免费观看一区二区三区 | 日本熟妇成熟毛茸茸 | 郑艳丽三级 | 日韩中文字幕第一页 | 久久人妻一区二区 | 国产精品v欧美精品v日韩精品 | 动漫av网站 | 欧美四级在线观看 | 色呦呦麻豆 | 欧美aⅴ在线观看 | av无码精品一区二区三区 | 国产超碰人人模人人爽人人添 | 国产欧美精品一区二区 | 国产中年熟女高潮大集合 | 欧美a级在线观看 | 黄色高清免费 | 91精品国产综合久久久蜜臀粉嫩 | 免费看麻豆 | 黄骗免费网站 | 亚洲拍拍| 日韩激情视频在线观看 | 大奶子在线观看 | 蜜桃传媒一区二区亚洲av | 午夜亚洲福利 | 欧美精品久久久久 | 亚洲天堂免费视频 | 欧美永久免费 | 久久久久久久国产精品毛片 | 日韩亚洲在线 | 欧美性猛交乱大交xxxx | 婷婷综合在线观看 | 性猛交xxxx乱大交孕妇2十 | 日韩精品片| 怡红院最新网址 | 国产一区亚洲一区 | 久久黄色网络 | 97av在线播放 | 久久精品欧美一区 | 色婷婷av一区二区三区大白胸 | 98久久| 波多野结衣黄色网址 | 日本黄色录像 | 丰满人妻一区二区三区免费视频棣 | 日日夜夜免费精品视频 | 武林美妇肉伦娇喘呻吟 | 91看片视频 | 亚洲 高清 成人 动漫 | eeuss一区二区三区 | 香港一级淫片免费放 | 欧美乱视频 | 国产区在线观看视频 | 国产成人无码a区在线观看视频 | 久久综合伊人77777麻豆最新章节 | 欧美成人三区 | 88xx成人永久免费观看 | 亚洲精品码| 亚洲久久色 | 精品久久久久久亚洲 | 日韩有码视频在线 | 久久久久久久国产精品 | 成人激情在线观看 | 精品在线一区二区 | 强行挺进白丝老师里呻吟 | 在线视频这里只有精品 | 丁香激情视频 | 女女h百合无遮涩涩漫画软件 | 97se综合| 色偷偷免费视频 | 高清毛片aaaaaaaaa片 | 国产精品无码内射 | 俄罗斯毛片 | 樱花草av| 秋霞福利网 | 国产在线成人精品午夜 | 国内自拍视频网站 | 欧美午夜精品久久久 | 制服丝袜第一页在线观看 | 国产老头户外野战xxxxx | 免费无遮挡无码永久在线观看视频 | 我爱avav色aⅴ爱avav | 爱爱视频免费看 | 国产欧美综合视频 | 欧美午夜激情视频 | 毛片内射 | 国产电影一区二区三区 | 黄色国产一级 | av在线观| 国产爆乳无码一区二区麻豆 | 伊人久色 | 医生强烈淫药h调教小说视频 | 一区二区不卡视频在线观看 | 免费成人美女在线观看. | 一区二区三区伦理 | 国产美女明星三级做爰 | 国产三级一区二区三区 | av久久久 | 91视频网址| 97免费在线视频 |