1? 對(duì)象優(yōu)先在eden 上分配郑趁。
配置參數(shù):?jvm初始分配的內(nèi)存最大內(nèi)存(-Xmx20m?) 最小堆內(nèi)存(-Xms20M )
年輕帶內(nèi)存 (-Xmn10M?) Eden 和 Suriv 的關(guān)系8:1:1(-XX:SuriviorRatio =8)
新生代 GC 纬凤。比較頻繁。作用于新生代笤昨。 Mionor GC
老年代GC祖驱。 發(fā)生在老年代。發(fā)生一次Major GC,伴隨著一次?Mionor GC瞒窒。
2? 大對(duì)象直接進(jìn)入老年代捺僻。
-XX:PretenureSizeThreshold 參數(shù)。
設(shè)置該參數(shù)的值崇裁,如果對(duì)象的內(nèi)存大于該值匕坯,直接在老年代分配。
該參數(shù)只適用于 Serial 和 PraNew 拔稳。 不支持 Prallel? Scavenge.?但是我用 ps 收集器測(cè)下來(lái)葛峻,是可以直接進(jìn)入老年代的。
3 長(zhǎng)期存活對(duì)象將進(jìn)入老年代巴比。
當(dāng)對(duì)象 經(jīng)歷一次GC后术奖,如果沒(méi)有被回收,并且在 Survivor能夠存下轻绞。則 它的age計(jì)數(shù)器+1采记。?可以通過(guò)? ?-XX:MaxTenuringThreshold 設(shè)置。
不設(shè)置 默認(rèn) 15政勃。 及對(duì)象的年齡計(jì)數(shù)器達(dá)到15后進(jìn)入老年代唧龄。
4 對(duì)象的動(dòng)態(tài)進(jìn)入 老年代。
當(dāng)? surivior 里的? 內(nèi)存稼病,存在同一個(gè)年齡內(nèi)存之和 是其surivior 內(nèi)存大小的一半時(shí)
所有大于和等于這個(gè)年齡的對(duì)象都會(huì)被? 存放到? 老年代选侨。
這個(gè)時(shí)候?qū)⒉粫?huì)在去查看??-XX:MaxTenuringThreshold?
這個(gè)參數(shù)。
5 內(nèi)存擔(dān)保然走。
HandlePromotionFailure
這個(gè)參數(shù) 援制,決定虛擬機(jī)是否要擔(dān)保
擔(dān)保 是來(lái)干什么的?芍瑞?
?我們知道? 新生代內(nèi)存有復(fù)制算法晨仑。? 就是使用 eded? 和 2 塊 survivor? 區(qū)域。 其中有一塊? survivor? 區(qū)域是不存放分配對(duì)象的。 只有當(dāng)進(jìn)行Minor GC洪己, 這個(gè)區(qū)域會(huì)把所有存貨的對(duì)象放到其上面妥凳,進(jìn)行年齡疊加。 所以答捕,會(huì)存在逝钥,Survivor 內(nèi)存小于存貨對(duì)象的內(nèi)存。這時(shí)候拱镐,內(nèi)存將直接在老年代分配艘款。
如果 不開(kāi)擔(dān)保?
每次?survivor 區(qū)內(nèi)存不夠都會(huì)進(jìn)行? GC.沃琅。
如果開(kāi)擔(dān)保哗咆?
內(nèi)存不夠就去老年代拿,所以可以省掉一部分不是很必要的GC益眉。 所以晌柬,這個(gè)參數(shù),還是
HandlePromotionFailure
開(kāi)了好郭脂。