上回說到《不識(shí)JVM真面目,只緣身在增刪查改中》
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)東勝,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575講述了一些有關(guān)于Jvm,線程,棧的有關(guān)技術(shù)知識(shí),還有兩個(gè)關(guān)于JVM的面試題:
GC——垃圾回收
完整意味著有多種情況
今天就接著將視頻內(nèi)容介紹完
可達(dá)性分析算法——GC Roots
判斷對(duì)象的存活
在Java, 可作為GC Roots的對(duì)象包括:
1、Java堆是垃圾回收器管理的主要區(qū)域
2、基于分代的方式
(1)新生代
(2)老年代
3、Java堆的大小參數(shù)設(shè)置
-Xmx 堆區(qū)內(nèi)存可被分配的大上限
-Xms 堆區(qū)內(nèi)存初始內(nèi)存分配的大小
新生代垃圾回收算法——復(fù)制算法
該算法的核心是將可用內(nèi)存按容量劃分為大小相等的兩塊, 每次只用其中一塊, 當(dāng)這一塊的內(nèi)存用完, 就將還存活的對(duì)象復(fù)制到另外一塊上面, 然后把已使用過的內(nèi)存空間一次清理掉.
優(yōu)點(diǎn)
缺點(diǎn)
最優(yōu)設(shè)置
90%的對(duì)象都是朝生夕死的,所以使用10%的空間用作交換區(qū),因?yàn)榻粨Q區(qū)必須有等量的兩個(gè),所以采用復(fù)制算法的新生代中的三個(gè)區(qū)采用8:1:1的默認(rèn)分配比例。
新生代對(duì)象的分配和回收
對(duì)象分配
(參數(shù)配置:-XX:SurvivorRatio )Eden區(qū)與Survivor區(qū)的大小比值。默認(rèn)是8
思考:如果new對(duì)象過大?
老年代對(duì)象的分配和回收
老年代的對(duì)象一般情況下來自新生代
(1)長期存活對(duì)象進(jìn)入老年代
(2)大對(duì)象直接進(jìn)入老年代
(3)對(duì)象提前晉升(組團(tuán))
動(dòng)態(tài)年齡判定:如果在Survivor空間中相同年齡所有對(duì)象大小的總和大于Survivor空間的一半,年齡大于或等于該年齡的對(duì)象就可以直接進(jìn)入老年代, 而無須等到晉升年齡.
JVM中一次完整的GC流程是怎樣的?
從上兩節(jié)總結(jié)出的一個(gè)面試題
對(duì)象的正常流程
Eden -> Survivor區(qū) -> 老年代
內(nèi)存區(qū)域不夠用了,就會(huì)引發(fā)GC
作為架構(gòu)師該怎么做:Minor GC避免不了,F(xiàn)ull GC盡量避免
處理方式:保存堆棧快照日志、分析內(nèi)存泄露、調(diào)整內(nèi)存設(shè)置控制垃圾回收頻率,選擇適合的垃圾回收器
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。