東莞網(wǎng)站優(yōu)化電話域名解析查詢工具
一、堆的內(nèi)存組成
二、復(fù)制算法
2.1、發(fā)生位置
復(fù)制算法主要發(fā)生在新生代,發(fā)生在新生代的垃圾回收也被叫做Minor GC。
2.2、?Minor GC的過(guò)程
復(fù)制===>清空===》交換?
1、eden、from區(qū)中的對(duì)象復(fù)制到to區(qū),年齡+1
? ? ? ? 首先,當(dāng)eden區(qū)滿的時(shí)候會(huì)觸發(fā)第一次GC,把還活著的對(duì)象拷貝到from區(qū),當(dāng)eden區(qū)再次滿的時(shí)候會(huì)掃描eden區(qū)和from區(qū),對(duì)這兩個(gè)區(qū)域的對(duì)象進(jìn)行垃圾回收,經(jīng)過(guò)這次回收后還存活著的對(duì)象,則直接復(fù)制到to區(qū)(如果有對(duì)象的年齡已經(jīng)達(dá)到了老年的標(biāo)準(zhǔn),則復(fù)制到老年代),同時(shí)把這些對(duì)象的年齡+1;
2、清空eden、from區(qū)
? ? ? ? 然后清空eden區(qū)和from區(qū)中的的對(duì)象,原來(lái)的from區(qū)變to區(qū),to區(qū)變?yōu)樾乱惠喌膄rom區(qū),也即復(fù)制之后有交換,誰(shuí)空誰(shuí)是to;
3、進(jìn)入老年代
? ? ? ? 部分對(duì)象會(huì)在from區(qū)和to區(qū)中復(fù)制來(lái)復(fù)制去,如此交換15次(由JVM的參數(shù)MaxTenuringThreshold決定,這個(gè)參數(shù)默認(rèn)值為15)之后,如果還活著將進(jìn)入老年代。
2.3、復(fù)制算法的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):不會(huì)產(chǎn)生內(nèi)存碎片
缺點(diǎn):
? ? ? ? (1)浪費(fèi)了一半的內(nèi)存,這太要命了;
? ? ? ? (2)如果對(duì)象的存活率很高,我們可以極端一點(diǎn),假設(shè)是100%存活,那么我們需要將所有對(duì)象都復(fù)制一遍,并將所有引用地址重置一遍,復(fù)制這一工作所花費(fèi)的時(shí)間,在對(duì)象的存活率達(dá)到一定程度時(shí),將會(huì)變得不可忽視。所以從以上描述不難看出,復(fù)制算法要想使用,最起碼對(duì)象的存活率要非常低才行,而且最重要的是,我們必須要客戶50%的內(nèi)存浪費(fèi)。