深入理解JVM-垃圾回收器
生活随笔
收集整理的這篇文章主要介紹了
深入理解JVM-垃圾回收器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
看完《深入理解JVM》,結(jié)合網(wǎng)上資料后根據(jù)跟人理解整理出的簡潔版,主要關(guān)注是什么, 怎么做到的,特點(diǎn)等,沒有進(jìn)入深入剖析,旨在快速了解,具體應(yīng)用時個人再根據(jù)具體點(diǎn)去進(jìn)行深入。歡迎留言討論!是什么?垃圾回收器是垃圾回收算法的包裝,可以在JVM中設(shè)置需要使用的垃圾回收器;怎么做?Serial收集器:單線程進(jìn)行垃圾回收, 執(zhí)行回收過程中,程序會暫停。特點(diǎn):簡單高效,適用于單個CPU場景。常用于新生代回收;SerialOld: Serial的老年代版本;用于老年代回收;parnew收集器:Serial 的多線程版本,回收過程中,程序也會暫停;特點(diǎn):適合多核場景,用于新生代回收,可以與CMS配合;Parallel收集器:并行回收,程序會暫停,可控制吞吐量;特點(diǎn):吞吐量優(yōu)先,更關(guān)注可控制的吞吐量,用于新生代回收;ParallelOld收集器:paraller老年代版本;parallel+parallelOld 為吞吐量優(yōu)先組合,當(dāng)應(yīng)用程序運(yùn)行在具有多個CPU上,對暫停時間沒有特別高的要求時,即程序主要在后臺進(jìn)行計算,而不需要與用戶進(jìn)行太多交互;例如,那些執(zhí)行批量處理、訂單處理、工資支付、科學(xué)計算的應(yīng)用程序;cms收集器:采用標(biāo)記清除算法,多線程回收,僅用于老年代;運(yùn)作流程:初始標(biāo)記、并發(fā)標(biāo)記、重新標(biāo)記、并發(fā)清除在并發(fā)標(biāo)記、并發(fā)清除階段可以多線程并行進(jìn)行;特點(diǎn):并發(fā)收集,低停頓,以回收最短停頓時間為目標(biāo),適用于常見B/S場景;缺點(diǎn):需要內(nèi)存大,影響吞吐;無法及時清理浮動垃圾;產(chǎn)生大量內(nèi)存碎片;解決辦法:通過 -XX:CMSInitiatingOccupancyFraction設(shè)置預(yù)留空間,以減少因?yàn)楦永?#xff0c;導(dǎo)致內(nèi)存空間無法滿足導(dǎo)致的fullgc;通過 -XX:+UseCMSCompactAtFullCollection開啟碎片合并整理;配合-XX:+CMSFullGCsBeforeCompaction設(shè)置執(zhí)行多少次不壓縮的fullgc后進(jìn)行一次整理壓縮;G1收集器:1.7版本推出,多線程處理,可管理整個堆內(nèi)存的垃圾回收:運(yùn)作流程:初始標(biāo)記、并發(fā)標(biāo)記、最終標(biāo)記、篩選回收特點(diǎn):結(jié)合多種垃圾算法,空間整合,不產(chǎn)生碎片低停頓的同時實(shí)現(xiàn)高吞吐量場景:面向服務(wù)端應(yīng)用,針對具有大內(nèi)存、多處理器的機(jī)器;最主要的應(yīng)用是為需要低GC延遲,并具有大堆的應(yīng)用程序提供解決方案;如:在堆大小約6GB或更大時,可預(yù)測的暫停時間可以低于0.5秒;常用參數(shù):-XX:+UseSerialGC:在新生代和老年代使用串行收集器-XX:+UseParNewGC:在新生代使用并行收集器-XX:+UseParallelGC :新生代使用并行回收收集器,更加關(guān)注吞吐量-XX:+UseParallelOldGC:老年代使用并行回收收集器-XX:ParallelGCThreads:設(shè)置用于垃圾回收的線程數(shù)-XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器-XX:ParallelCMSThreads:設(shè)定CMS的線程數(shù)量-XX:+UseG1GC:啟用G1垃圾回收器-XX:InitiatingHeapOccupancyPercent:當(dāng)整個Java堆的占用率達(dá)到參數(shù)值時,開始并發(fā)標(biāo)記階段;默認(rèn)為45;-XX:MaxGCPauseMillis:為G1設(shè)置暫停時間目標(biāo),默認(rèn)值為200毫秒;
復(fù)制代碼
總結(jié)
以上是生活随笔為你收集整理的深入理解JVM-垃圾回收器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 17、加密解密技术介绍
- 下一篇: sublime 光标由竖线变下横线