Java堆由Perm區(qū)和Heap區(qū)組成,Heap區(qū)由Old區(qū)和New區(qū)(也叫Young區(qū))組成,New區(qū)由Eden區(qū)、From區(qū)和To區(qū)(Survivor)組成。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供思禮網(wǎng)站建設(shè)、思禮做網(wǎng)站、思禮網(wǎng)站設(shè)計(jì)、思禮網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、思禮企業(yè)網(wǎng)站模板建站服務(wù),10年思禮做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Eden區(qū)用于存放新生成的對(duì)象。Eden中的對(duì)象生命不會(huì)超過(guò)一次Minor GC。
Survivor Space 有兩個(gè),存放每次垃圾回收后存活的對(duì)象,即圖的S0和S1。
Old Generation Old區(qū),也稱老生代,主要存放應(yīng)用程序中生命周期長(zhǎng)的存活對(duì)象
將EDEN與From survivor中的存活對(duì)象存入To survivor區(qū)時(shí),To survivor區(qū)的空間不足,
再次晉升到old gen區(qū),而old gen區(qū)內(nèi)存也不夠的情況下產(chǎn)生了promontion faild從而導(dǎo)致full gc.那可以推斷出:eden+from survivor < old gen區(qū)剩余內(nèi)存時(shí),
不會(huì)出現(xiàn)promontion faild的情況。
即:
(Xmx-Xmn)*(1-CMSInitiatingOccupancyFraction/100)>=(Xmn-Xmn/(SurvivorRatior+2))
進(jìn)而推斷出:
CMSInitiatingOccupancyFraction <=((Xmx-Xmn)-(Xmn-Xmn/(SurvivorRatior+2)))/(Xmx-Xmn)*100
Xmx-Xmn:Old區(qū)大小。
CMSInitiatingOccupancyFraction/100:Old區(qū)百分之多少時(shí),cms開(kāi)始gc
1-CMSInitiatingOccupancyFraction/100: Old區(qū)開(kāi)始gc回收時(shí)剩余空間百分比
(Xmx-Xmn)*(1-CMSInitiatingOccupancyFraction/100): Old區(qū)開(kāi)始gc回收時(shí)剩余空間大小
(Xmn-Xmn/(SurvivorRatior+2)): eden+from survivor區(qū)的大小
-Xmx :java heap大值。建議均設(shè)為物理內(nèi)存的80%。不可超過(guò)物理內(nèi)存。
-Xmn:java heap最小值,一般設(shè)置為Xmx的3、4分之一,等同于-XX:NewSize 和 -XX:MaxNewSize ,其實(shí)為young區(qū)大小。
-XX:CMSInitiatingOccupancyFraction=70 :使用cms作為垃圾回收使用70%后開(kāi)始CMS收集。
-XX:SurvivorRatio=2: 生還者池的大小,默認(rèn)是2。