日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

什么是jvm垃圾?jvm垃圾回收機(jī)制有幾種( 二 )


 
大體來(lái)看可以分為 這么幾個(gè)步驟:
 
復(fù)制 清空 易位
 
不難看出,標(biāo)記復(fù)制算法不需要標(biāo)記算是提升了效率 。此外他也不會(huì)參數(shù)碎片問(wèn)題 。
 
但是 。標(biāo)記復(fù)制算法的缺點(diǎn)也是十分明顯的,它需要雙倍空間 。
 
問(wèn)題3:垃圾回收的具體流程是怎樣的?
既然說(shuō)JVM虛擬機(jī)不會(huì)單獨(dú)采用某種算法,而是會(huì)結(jié)合三種算法讓他們協(xié)同工作,其具體的實(shí)現(xiàn)就是java虛擬機(jī)里的分代垃圾回收機(jī)制 。
 
上圖所示,就是Java堆內(nèi)存的劃分 。為什么需要這么劃分區(qū)域呢?那是因?yàn)槲覀兊膉ava對(duì)象壽命都是不同的,有的可能需要長(zhǎng)時(shí)間使用,而有的可能用完就可以丟去 。于是我們可以根據(jù)其生命周期的不同特點(diǎn),進(jìn)行不同的垃圾回收策略 。
 
總的來(lái)說(shuō),新生代的垃圾回收比較頻繁,老年代很久才觸發(fā)一次垃圾回收 。新生代處理的都是一些朝生夕死的對(duì)象,而老年代回收的是更有價(jià)值的,會(huì)長(zhǎng)時(shí)間存活的對(duì)象 。
舉個(gè)很好理解的例子:新生代處理垃圾,就像是處理生活日用垃圾,而老年代處理的垃圾,更像是過(guò)年大掃除,家里實(shí)在太多垃圾了來(lái)一次重清理 。大掃除清理的垃圾,都是在家中存放時(shí)間較長(zhǎng)的,往往可能曾經(jīng)很受用,如今退役了先放著過(guò)年再打掃清除掉 。
 
每一次,我們創(chuàng)建一個(gè)對(duì)象,都會(huì)在伊甸園區(qū)占據(jù)一定內(nèi)存大小,漸漸地伊甸園就滿了 。當(dāng)我們?cè)僖獎(jiǎng)?chuàng)建對(duì)象時(shí),就會(huì)發(fā)現(xiàn)空間不夠了 。
 
這時(shí),就會(huì)觸發(fā)一次垃圾回收,新生代觸發(fā)的垃圾回收有個(gè)稱呼叫做MinorGC 。
 
MinorGC觸發(fā)后,伊甸園區(qū)就會(huì)對(duì)各個(gè)對(duì)象進(jìn)行可達(dá)性分析,從而知道哪些對(duì)象應(yīng)該作為垃圾被清理 。
 
MinorGC在這里采取的是標(biāo)記復(fù)制算法,它將有用的對(duì)象存放到幸存區(qū)to,然后把伊甸園中的對(duì)象清除掉 。
 
進(jìn)入幸存區(qū)的幸運(yùn)兒,將會(huì)被標(biāo)記上一個(gè)“幸運(yùn)值”,代表他們抗住了多少次清理 。
 
最后,幸存區(qū)to和幸存區(qū)from還需要交互一下位置,這里不是指物理位置交換,而是說(shuō),它倆的定義發(fā)生了交換,下次就是左邊那個(gè)為幸存區(qū)to,右邊的為幸存區(qū)from了 。
 
換句話說(shuō),幸存區(qū)to始終是空的 。
 
我們?cè)倌M多幾次,加深一下印象:
 
假如又進(jìn)來(lái)了不少對(duì)象,伊甸園又滿了!
 
那就會(huì)觸發(fā)一次MinorGC,把幸存者移步到幸存區(qū)to,其他一律清空 。
 
最后別忘了,幸存區(qū)from和幸存區(qū)to又要再交換一下”位置“ 。
【什么是jvm垃圾?jvm垃圾回收機(jī)制有幾種】 

推薦閱讀