在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何選擇垃圾收集器

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-09 16:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、垃圾收集器種類

事實上Java虛擬機規(guī)范對垃圾收集器應(yīng)該如何實現(xiàn),并沒有任何的規(guī)定,所以不同的廠商、不同版本的虛擬機所提供的垃圾收集器都會有所不同,并且一般都會提供參數(shù)供用戶根據(jù)自己的應(yīng)用特點和要求組合出各個年代所使用的收集器。

下圖是基于 Sun HotSpot 虛擬機1.6版 Update 22的虛擬機種類:

圖片

由上圖我們可以總結(jié)出幾個結(jié)論:

①、新生代垃圾收集器:Serial、ParNew、Parallel Scavenge;

老年代垃圾收集器:Serial Old(MSC)、Parallel Old、CMS;

整堆垃圾收集器:G1

②、垃圾收集器之間的連線表示可以搭配使用,有如下幾種組合:

Serial/Serial Old、Serial/CMS、ParNew/Serial Old、ParNew/CMS、Parallel Scavenge/Serial Old、Parallel Scavenge/Parallel Old、G1;

③、串行收集器Serial:Serial、Serial Old

并行收集器 Parallel:Parallel Scavenge、Parallel Old

并發(fā)收集器:CMS、G1

2、Serial收集器

這是一個最基本,歷史最悠久的垃圾收集器,是JDK1.3之前新生代唯一的垃圾收集器。

該收集器有如下特點:

①、作用于新生代

由上圖也可看出,這是一個新生代垃圾收集器,采用的垃圾回收算法是復(fù)制算法。

②、單線程

工作時只會使用一個CPU或者一條收集線程去完成工作。

③、進行垃圾收集時,必須暫停所有工作線程

也就是說使用Serial收集器進行垃圾回收時,別的工作線程都暫停,系統(tǒng)這時候會有卡頓現(xiàn)象產(chǎn)生。

④、適用場景

Serial 收集器由于沒有線程交互的開銷,對于限定單個CPU的環(huán)境,可以獲得最高的單線程收集效率。

一般在用戶的桌面場景中,分配給虛擬機管理的內(nèi)存一般來說不會很大,收集幾十兆或一兩百兆的新生代,定頓時間可以控制在幾十毫秒,只要不是頻繁發(fā)生的,這點停頓是可以接受的。

所以 Serial 收集器對于運行在 Client 模式下的虛擬機是一種很好的選擇。

3、ParNew收集器

這個收集器其實就是Serial收集器的多線程版本。

也就是說其特點除了多線程,其余和Serial收集器一樣,事實上,這兩個收集器實現(xiàn)上也共用了很多代碼。

①、作用于新生代

一個新生代垃圾收集器,采用的垃圾回收算法是復(fù)制算法。

②、多線程

彌補了Serial收集器單線程的缺陷。

③、適用場景

由于其多線程的特性,是大多數(shù)運行在 Server 模式下的虛擬機首選新生代垃圾收集器。

另外需要說明的是,能夠與下面將要介紹的劃時代垃圾收集器CMS(Concurrent Mark Sweep)配合使用,也是一個重要原因。

4、Parallel Scavenge收集器

前面介紹的垃圾收集器關(guān)注點是盡可能縮小垃圾收集時的用戶線程停頓時間。而 Parallel Scanvenge 收集器是為了達到一個可控制的吞吐量。

吞吐量 = 運行用戶代碼的時間 / (運行用戶代碼的時間+垃圾收集時間)

可以用下面兩個參數(shù)進行精確控制:

-XX:MaxGCPauseMills 設(shè)置最大垃圾收集停頓時間

-XX:GCTimeRatio 設(shè)置吞吐量大小

①、作用于新生代

一個新生代垃圾收集器,采用的垃圾回收算法是復(fù)制算法。

②、多線程

并行的多線程垃圾收集器。

③、吞吐量

這個收集器可以精確控制吞吐量。

④、適用場景

設(shè)置垃圾收集停頓時間短適合需要與用戶快速交互的程序;

而設(shè)置高吞吐量可以最高效的利用CPU效率,盡快的完成程序的運算任務(wù),主要適合在后臺運算而不需要太多交互的任務(wù)。

5、Serial Old收集器

Serial Old 收集器是 Serial 收集器的老年代版本,特點如下:

①、作用于老年代

②、單線程

③、使用標(biāo)記-整理算法

④、進行垃圾收集時,必須暫停所有工作線程

6、Parallel Old收集器

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

①、作用于老年代

②、多線程

③、使用標(biāo)記-整理算法

除了具有以上幾個特點,比較關(guān)鍵的是能和新生代收集器 Parallel Scavenge 配置使用,獲得吞吐量最大化的效果。

7、CMS收集器

CMS,全稱為 Concurrent Mark Sweep ,顧名思義并發(fā)的,采用標(biāo)記-清除算法。另外也將這個收集器稱為并發(fā)低延遲收集器(Concurrent Low Pause Collector)

這是一款跨時代的垃圾收集器,真正做到了垃圾收集線程與用戶線程(基本上)同時工作。和 Serial 收集器的 Stop The World(媽媽打掃房間的時候,你不能再將垃圾丟到地上) 相比,真正做到了媽媽一邊打掃房間,你一邊丟垃圾。

①、作用于老年代

②、多線程

③、使用標(biāo)記-清除算法

整個算法過程分為如下 4 步:

一、初始標(biāo)記(CMS initial mark):只是僅僅標(biāo)記GC Root 能夠直接關(guān)聯(lián)的對象,速度很快,但是需要“Stop The World”

二、并發(fā)標(biāo)記(CMS concurrent mark):進行GC Root Tracing的過程,簡單來說就是遍歷Initial Marking階段標(biāo)記出來的存活對象,然后繼續(xù)遞歸標(biāo)記這些對象可達的對象。

三、重新標(biāo)記(CMS Remark):修正并發(fā)標(biāo)記期間,因用戶程序繼續(xù)運行而導(dǎo)致標(biāo)記產(chǎn)生變動的那一部分對象的標(biāo)記記錄,需要“Stop The World”。這個時間一般比初始標(biāo)記長,但是遠比并發(fā)標(biāo)記時間短。

四、并發(fā)清除(CMS concurrent sweep):對上一步標(biāo)記的對象進行清除操作。

由于整個過程最耗時的操作是第二(并發(fā)標(biāo)記)、四步(并發(fā)清除),而這兩步垃圾收集器線程是可以和用戶線程一起工作的。所以整體來說,CMS垃圾收集和用戶線程是一起并發(fā)的執(zhí)行的。

缺點:

①、對CPU資源敏感

因為在并發(fā)階段,會占用一部分CPU資源,從而導(dǎo)致應(yīng)用程序變慢,總吞吐量會降低。

②、產(chǎn)生浮動垃圾

由于CMS并發(fā)清理階段用戶線程還在工作,這個時候產(chǎn)生的垃圾,CMS無法在本次收集中處理掉它們,只能留在下一次GC時再將其處理掉,這部分垃圾稱為“浮動垃圾”。

③、產(chǎn)生內(nèi)存垃圾碎片

因為采用的算法是標(biāo)記-清除,很明顯,會有空間碎片產(chǎn)生。

8、G1收集器

這是當(dāng)前收集器技術(shù)發(fā)展的最前沿的成果。可以實現(xiàn)在基本不犧牲吞吐量的前提下完成低停頓的內(nèi)存回收,首發(fā)于JDK8中,是JDK9默認(rèn)的垃圾回收器。

這是因為它并不像前面介紹的所有垃圾收集器是區(qū)分新生代,老年代的,它作用于全區(qū)域。將整個Java堆劃分為多個大小固定的獨立區(qū)域(Regin),并且跟蹤這些區(qū)域的垃圾堆積面積,在后臺維護一個優(yōu)先級列表,每次根據(jù)允許的收集時間,優(yōu)先回收垃圾最多的區(qū)域,這樣保證了G1收集器在有限的時間內(nèi)可以獲得最高的收集效率。

它與前面講的 CMS 垃圾收集器相比,有兩個顯著的改進:

①、采用 標(biāo)記-整理 的回收算法

這樣不會產(chǎn)生空間碎片

②、可以精確的控制停頓時間

能讓使用者明確指定一個長度為M毫秒的時間片內(nèi),消耗在垃圾回收上的時間不超過 N 毫秒。

③、作用于整個Java堆

G1收集器不區(qū)分年輕代和老年代,是整堆垃圾收集器。

9、ZGC 收集器

這是JDK11發(fā)布的一款垃圾收集器,是一個可擴展的低延遲垃圾收集器,JDK17的默認(rèn)垃圾收集器,能用就用,性能絕對可以。有如下特性:

①、暫停時間不超過10毫秒

②、暫停時間不會隨堆或?qū)崟r設(shè)置大小而增加

③、處理堆范圍從幾百M到幾TB。

10、如何選擇垃圾收集器

除非應(yīng)用程序有相當(dāng)嚴(yán)格的暫停時間要求,否則就讓JVM自己選擇垃圾收集器。并且可以適當(dāng)優(yōu)先調(diào)整堆的大小來提高性能。如果還不滿足要求,則以下面四點作為指導(dǎo):

  1. 如果應(yīng)用程序內(nèi)存小于100M,那么使用選項選擇串行收集器-XX:+UseSerialGC。
  2. 如果應(yīng)用程序?qū)⒃趩魏?a target="_blank">處理器上運行,并且沒有停頓時間的要求,選擇串行-XX:+UseSerialGC或者 JVM 自己選
  3. 如果允許停頓時間超過1秒,選擇并行或 JVM 自己選
  4. 如果響應(yīng)時間比總吞吐量更重要,并且垃圾收集暫停必須保持短于大約1秒,則使用-XX:+UseConcMarkSweepGC或選擇并發(fā)收集器-XX:+UseG1GC。

當(dāng)然,現(xiàn)在無腦選擇ZGC,絕對沒錯。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2988

    瀏覽量

    108472
  • 虛擬機
    +關(guān)注

    關(guān)注

    1

    文章

    966

    瀏覽量

    29230
  • JDK
    JDK
    +關(guān)注

    關(guān)注

    0

    文章

    83

    瀏覽量

    16851
  • 收集器
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    3324
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    BQ25504設(shè)計太陽能收集器,請問的輸出電壓VSTOR怎么設(shè)定。

    BQ25504設(shè)計太陽能收集器,據(jù)介紹BQ25504有最大功率跟蹤和穩(wěn)壓輸出功能,請問的輸出電壓VSTOR怎么設(shè)定。
    發(fā)表于 03-26 09:41

    請問adi有沒有能量收集器

    很多產(chǎn)品雖然低功耗但總有能源結(jié)束的時候,有沒有把微弱自然能量收集收集器呢?
    發(fā)表于 08-06 07:13

    簡易6LoWPAN網(wǎng)格數(shù)據(jù)收集器參考設(shè)計包括BOM及層圖

    描述TIDA-01547 參考設(shè)計實現(xiàn)了一款用于智能儀表先進抄表基礎(chǔ)設(shè)施 (AMI) 網(wǎng)絡(luò)的簡單網(wǎng)狀網(wǎng)絡(luò)數(shù)據(jù)收集器。該網(wǎng)絡(luò)是一種基于低功耗無線個人局域網(wǎng)的 IPv6 (6LoWPAN) 解決方案。該
    發(fā)表于 10-17 15:44

    基于LTC3588EDD-1熱電能量收集器的應(yīng)用電路

    LTC3588EDD-1熱電能量收集器的典型應(yīng)用電路。 LTC3588-1集成了低損耗全波橋式整流和高效降壓轉(zhuǎn)換,形成了針對高輸出阻抗能源(如壓電,太陽能或磁傳感)優(yōu)化的完整能量
    發(fā)表于 05-12 09:23

    基于MCU和RF組件實現(xiàn)的能量收集器

      雖然能量收集并不是一個全新概念,但在RF和微控制(MCU)元件效能與功耗方面取得的最新進展,意味著建置一個採用能量收集的應(yīng)用,例如感測節(jié)點,現(xiàn)在變得更加容易。另外,對于同樣的能
    發(fā)表于 09-13 11:23 ?12次下載
    基于MCU和RF組件實現(xiàn)的能量<b class='flag-5'>收集器</b>

    Microgen公司的壓電-MEMS振動能量收集器支持線性技術(shù)SmartMesh IP無線傳感網(wǎng)絡(luò)

    Microgen公司的壓電-MEMS振動能量收集器支持線性技術(shù)SmartMesh IP無線傳感網(wǎng)絡(luò)
    發(fā)表于 04-17 09:31 ?2次下載
    Microgen公司的壓電-MEMS振動能量<b class='flag-5'>收集器</b>支持線性技術(shù)SmartMesh IP無線傳感<b class='flag-5'>器</b>網(wǎng)絡(luò)

    LTC3107:超低壓能量收集器和一次電池壽命延長數(shù)據(jù)表

    LTC3107:超低壓能量收集器和一次電池壽命延長數(shù)據(jù)表
    發(fā)表于 05-17 12:01 ?3次下載
    LTC3107:超低壓能量<b class='flag-5'>收集器</b>和一次電池壽命延長<b class='flag-5'>器</b>數(shù)據(jù)表

    LTC3108演示電路-Peltier供電的遙感能量收集器(30 mV至3.3V)

    LTC3108演示電路-Peltier供電的遙感能量收集器(30 mV至3.3V)
    發(fā)表于 06-09 08:50 ?58次下載
    LTC3108演示電路-Peltier供電的遙感<b class='flag-5'>器</b>能量<b class='flag-5'>收集器</b>(30 mV至3.3V)

    OPC UA數(shù)據(jù)收集器用戶手冊

    OPC UA數(shù)據(jù)收集器用戶手冊 產(chǎn)品規(guī)格書
    發(fā)表于 08-26 10:12 ?2次下載
    OPC UA數(shù)據(jù)<b class='flag-5'>收集器</b>用戶手冊

    護河神器-自動收集水面垃圾

    水上垃圾非常困難,導(dǎo)致內(nèi)河污染問題日益嚴(yán)重。 運用物聯(lián)網(wǎng)技術(shù)控制“護河神器”-漫途水面垃圾自動收集器對水面垃圾進行收集清理,并實現(xiàn)自動調(diào)整
    的頭像 發(fā)表于 11-28 16:36 ?1751次閱讀
    護河神器-自動<b class='flag-5'>收集</b>水面<b class='flag-5'>垃圾</b>!

    帶有有限狀態(tài)機的機械臂對象收集器

    電子發(fā)燒友網(wǎng)站提供《帶有有限狀態(tài)機的機械臂對象收集器.zip》資料免費下載
    發(fā)表于 12-27 10:08 ?0次下載
    帶有有限狀態(tài)機的機械臂對象<b class='flag-5'>收集器</b>

    JVM的垃圾機制是如何工作的呢?

    單線程收集器,“單線程” 的意義并不僅僅說明它只會使用一個 CPU 或一條收集線程去完成垃圾收集工作,更重要的是在它進行垃圾
    的頭像 發(fā)表于 02-28 16:08 ?826次閱讀

    漫途智能網(wǎng)關(guān)助力必藍水面垃圾收集器成為智慧數(shù)字城市的環(huán)境守護者!

    無錫高新區(qū)報道了一種“24小時自動吃垃圾”的神奇產(chǎn)品,該設(shè)備是一種智能化的水面垃圾收集器。 文章截圖 這款水面垃圾自動收集器采用了最新的跌水
    的頭像 發(fā)表于 05-09 16:25 ?839次閱讀
    漫途智能網(wǎng)關(guān)助力必藍水面<b class='flag-5'>垃圾</b><b class='flag-5'>收集器</b>成為智慧數(shù)字城市的環(huán)境守護者!

    Farmaid數(shù)據(jù)收集器開源分享

    電子發(fā)燒友網(wǎng)站提供《Farmaid數(shù)據(jù)收集器開源分享.zip》資料免費下載
    發(fā)表于 06-27 10:00 ?0次下載
    Farmaid數(shù)據(jù)<b class='flag-5'>收集器</b>開源分享

    垃圾收集器的JVM參數(shù)配置

    本篇文章我們就來給大家介紹垃圾收集器的 JVM 參數(shù)配置。 JVM參數(shù)有很多,其實我們直接使用默認(rèn)的JVM參數(shù),不去修改都可以滿足大多數(shù)情況。但是如果你想在有限的硬件資源下,部署的系統(tǒng)達到最大的運行
    的頭像 發(fā)表于 10-09 16:35 ?756次閱讀
    <b class='flag-5'>垃圾</b><b class='flag-5'>收集器</b>的JVM參數(shù)配置
    主站蜘蛛池模板: 天天干视频在线观看 | 日韩三级在线免费观看 | 视色4se成人午夜精品 | 欧美亚洲专区 | 欧美大狠狠大臿蕉香蕉大视频 | 黄页在线播放网址 | 日本人爽p大片免费看 | 国产剧情麻豆三级在线观看 | 国产色丁香久久综合 | 国产精品视频久久久久久 | 69日本xxxxxxxxx98 69日本xxxxxxxxx内谢 | 久久久噜久噜久久gif动图 | 国产午夜视频 | 中文字幕色| 美女视频黄视大全视频免费网址 | 国产色爽女 | 亚洲国产情侣偷自在线二页 | 婷婷开心激情网 | 新版天堂资源在线官网8 | 免费在线你懂的 | 成年视频xxxxx免费播放软件 | 高清视频一区二区 | 一级特黄特黄的大片免费 | 午夜啪 | 深夜视频在线播放视频在线观看免费观看 | 美女网站色在线观看 | 七月婷婷在线视频综合 | 夜夜橹橹网站夜夜橹橹 | 波多野结衣在线网站 | 狠狠操天天 | 天天干天天操天天碰 | 丁香花成人另类小说 | 午夜精品视频 | 午夜三级成人三级 | 欧美成人激情在线 | 亚洲阿v天堂2018在线观看 | 中国一级特黄真人毛片 | 亚洲欧美在线播放 | 男人女人的免费视频网站 | 在线观看免费视频国产 | 5555kkkk香蕉在线观看 |