JVM垃圾回收器的發(fā)展歷程及使用場景匯總

上一篇 <<<JVM垃圾回收STW(Stop-The-World)代碼演示
下一篇 >>>JVM串行并行垃圾回收器的關(guān)注點(diǎn)


垃圾回收器的發(fā)展歷史

1999年:隨JDK1.3.1一起來的串行方式Serial GC(第一款GC)婉徘,ParNew GC是SerialGC的多線程版本。
2002年:2月26日播赁,Parallel GC和Concurrent Mark Sweep GC(即CMS)跟隨JDK1.4.2一起發(fā)布梆靖。Parallel GC在JDK6之后成為Hotspot默認(rèn)GC瓢湃。
2012年:在JDK1.7u4中法瑟,G1可用。
2017年:JDK9中G1成為默認(rèn)垃圾回收器酷麦,以替代CMS.
2018年:3月,JDK10中G1的并行完整垃圾回收喉恋,實(shí)現(xiàn)并行性能改善最壞情況的延遲沃饶。
9月母廷,JDK11發(fā)布,引入Epsilon GC糊肤,又稱為“No-Op無操作”回收器琴昆,同時(shí)引入ZGC:可伸縮的低延遲回收器(Experimental)
2019年:3月,JDK12發(fā)布轩褐。增加G1椎咧,自動(dòng)返回未使用堆內(nèi)存給操作系統(tǒng);同時(shí)把介,引入Shenandoah GC:地停頓時(shí)間的GC(Experimental)
9月勤讽,JDK13發(fā)布。增強(qiáng)ZGC拗踢,自動(dòng)返回未使用堆內(nèi)存給操作系統(tǒng)脚牍。
2020年:3月,JDK14發(fā)布巢墅。刪除CMS诸狭,擴(kuò)展ZGC,在mac和windows的應(yīng)用君纫。

頻繁推出垃圾回收器的原因驯遇?

主要解決STW問題。

怎樣避免垃圾收集器頻繁回收蓄髓?

可以內(nèi)存調(diào)優(yōu)
a叉庐、堆內(nèi)存空間設(shè)置比例較大
b、堆內(nèi)存初始化與最大值一定保持一致
c会喝、生成環(huán)境中不要去調(diào)用System.gc()

垃圾回收器何時(shí)觸發(fā)收集垃圾陡叠?

當(dāng)新生代或老年代內(nèi)存滿的時(shí)候。

垃圾回收器的7種類型

串行GC:采用單線程回收垃圾肢执,用戶線程處于等待狀態(tài)枉阵,適合于堆內(nèi)存空間比較小和個(gè)人小項(xiàng)目
并行GC:多條垃圾收集線程并行工作,但用戶線程仍然處于等待狀態(tài)预茄。
并發(fā)GC:用戶線程和垃圾收集線程同時(shí)執(zhí)行兴溜,他們運(yùn)行于不同的CPU上。(不一定是并行耻陕,可能是交替執(zhí)行)

回收器 類型 算法 作用位置 特點(diǎn) 使用場景
SerialGC 串行收集器 復(fù)制算法 新生代 響應(yīng)速度快 適合單核的客戶端應(yīng)用程序下
SerialGCOld 串行收集器 標(biāo)記整理算法 老年代 響應(yīng)速度快 適合單核的客戶端應(yīng)用程序下
ParNew 并行收集器 復(fù)制算法 新生代 響應(yīng)速度快 適合多核的cpu情況下拙徽,默認(rèn)與cms配合使用
Parallel 并行收集器 復(fù)制算法 新生代 吞吐量優(yōu)先 適合于后端多核cpu情況下 堆內(nèi)存不是很大
Parallel old 并行收集器 標(biāo)記整理算法 老年代 老年代吞吐量優(yōu)先 適合于后端多核cpu情況下 堆內(nèi)存不是很大
CMS 收集器并發(fā)收集器 標(biāo)記清除 老年代 響應(yīng)速度快 適合于企業(yè)級(jí)B/S項(xiàng)目
G1收集器 并發(fā)收集器 標(biāo)記整理算法/復(fù)制算法 老年代/新生代 響應(yīng)速度優(yōu)先 適合于大型服務(wù)器端

垃圾回收器的組合方式

如何查看當(dāng)前垃圾回收器

a、-XX:+PrintCommandLineFlags 參數(shù)可查看默認(rèn)設(shè)置收集器類型
命令:java -XX:+PrintCommandLineFlags -version
b淮蜈、JConsole工具


如何動(dòng)態(tài)設(shè)置當(dāng)前垃圾回收器

jinfo -flag +HeapDumpAfterFullGC pid


+號(hào)表示設(shè)置當(dāng)前參數(shù)為true斋攀,-號(hào)為false。*
靜態(tài)設(shè)置請(qǐng)參考JVM串行并行垃圾回收器的關(guān)注點(diǎn)梧田、一張圖看懂CMS垃圾回收器的底層原理
淳蔼、G1能作為JDK9默認(rèn)垃圾回收器的優(yōu)勢分析

垃圾回收器和垃圾回收算法區(qū)別

垃圾收集器:串行侧蘸、并行收集、CMS鹉梨、G1讳癌、Java11的ZGC收集器,能夠降低對(duì)我們用戶線程暫停的時(shí)間或者用戶線程和GC線程同時(shí)運(yùn)行存皂。
垃圾收集算法:回收算法:標(biāo)記清除晌坤、標(biāo)記整理、標(biāo)記復(fù)制旦袋、分代算法骤菠。


相關(guān)文章鏈接:
<<<JVM整體內(nèi)存結(jié)構(gòu)的圖解,直觀明了
<<<javap命令查看對(duì)象信息及操作方法在JVM層的實(shí)現(xiàn)原理
<<<javap命令反查匯編指令匯總
<<<ClassLoader類加載器順序Demo測試與雙親委派源碼解讀
<<<自定義SPI和熱部署技術(shù)破壞類加載器的雙親委派模式
<<<JVM中對(duì)象如何完成空間分配和初始化工作
<<<JVM元空間(方法區(qū))和棧內(nèi)存溢出原因及解決方案
<<<JVM堆內(nèi)存溢出和內(nèi)存泄露問題定位和解決
<<<JVM常見死鎖問題產(chǎn)生原因和多種診斷方式
<<<服務(wù)器CPU飆升為100%問題排查及如何避免
<<<JVM內(nèi)存診斷命令和排查工具匯總
<<<JVM新生代老年代算法匯總圖解
<<<JVM垃圾回收不要手動(dòng)System.gc的真正原因
<<<JVM垃圾回收引用計(jì)數(shù)法和根搜索算法圖解
<<<JVM垃圾回收STW(Stop-The-World)代碼演示
<<<JVM串行并行垃圾回收器的關(guān)注點(diǎn)
<<<一張圖看懂CMS垃圾回收器的底層原理
<<<G1能作為JDK9默認(rèn)垃圾回收器的優(yōu)勢分析
<<<CMS和G1的漏標(biāo)問題解決及三色標(biāo)記算法圖解
<<<GC中新生代進(jìn)入老年代的方式匯總
<<<GC常用日志參數(shù)配置及分析工具說明
<<<FullGC疤孕、MinorGC商乎、STW等常見問題如何解答
<<<JVM性能調(diào)優(yōu)的評(píng)估指標(biāo)及調(diào)優(yōu)示例

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市祭阀,隨后出現(xiàn)的幾起案子鹉戚,更是在濱河造成了極大的恐慌,老刑警劉巖专控,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抹凳,死亡現(xiàn)場離奇詭異,居然都是意外死亡伦腐,警方通過查閱死者的電腦和手機(jī)赢底,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔗牡,“玉大人颖系,你說我怎么就攤上這事嗅剖”缭剑” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵信粮,是天一觀的道長黔攒。 經(jīng)常有香客問我,道長强缘,這世上最難降的妖魔是什么督惰? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮旅掂,結(jié)果婚禮上赏胚,老公的妹妹穿的比我還像新娘。我一直安慰自己商虐,他們只是感情好觉阅,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布崖疤。 她就那樣靜靜地躺著,像睡著了一般典勇。 火紅的嫁衣襯著肌膚如雪劫哼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天割笙,我揣著相機(jī)與錄音权烧,去河邊找鬼。 笑死伤溉,一個(gè)胖子當(dāng)著我的面吹牛般码,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乱顾,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼侈询,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了糯耍?” 一聲冷哼從身側(cè)響起扔字,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎温技,沒想到半個(gè)月后革为,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舵鳞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年震檩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜓堕。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抛虏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出套才,到底是詐尸還是另有隱情迂猴,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布背伴,位于F島的核電站沸毁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏傻寂。R本人自食惡果不足惜息尺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疾掰。 院中可真熱鬧搂誉,春花似錦、人聲如沸静檬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凛虽,卻和暖如春死遭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凯旋。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工呀潭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人至非。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓钠署,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荒椭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谐鼎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容