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)堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的東洲網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
Eden區(qū)用于存放新生成的對象。Eden中的對象生命不會超過一次Minor GC。Survivor Space 有兩個,存放每次垃圾回收后存活的對象,即圖的S0和S1。Old Generation Old區(qū),也稱老生代,主要存放應用程序中生命周期長的存活對象
將EDEN與From survivor中的存活對象存入To survivor區(qū)時,To survivor區(qū)的空間不足,再次晉升到old gen區(qū),而old gen區(qū)內(nèi)存也不夠的情況下產(chǎn)生了promontion faild從而導致full gc.那可以推斷出:
eden+from survivor < old gen區(qū)剩余內(nèi)存時,不會出現(xiàn)promontion faild的情況。
即:
(Xmx-Xmn)*(1-CMSInitiatingOccupancyFraction/100)>=(Xmn-Xmn/(SurvivorRatior+2))
進而推斷出:
CMSInitiatingOccupancyFraction <= ((Xmx-Xmn)-(Xmn-Xmn/(SurvivorRatior+2)))/(Xmx-Xmn)*100
參數(shù) | 含義 |
---|---|
Xmx-Xmn | Old區(qū)大小 |
CMSInitiatingOccupancyFraction/100 | Old區(qū)百分之多少時,cms開始gc |
1-CMSInitiatingOccupancyFraction/100 | Old區(qū)開始gc回收時剩余空間百分比 |
(Xmx-Xmn)*(1-CMSInitiatingOccupancyFraction/100) | Old區(qū)開始gc回收時剩余空間大小 |
(Xmn-Xmn/(SurvivorRatior+2)) | eden+from survivor區(qū)的大小 |
參數(shù) | 含義 |
---|---|
-Xmx | java heap最大值。建議均設(shè)為物理內(nèi)存的80%。不可超過物理內(nèi)存 |
-Xmn | java heap最小值,一般設(shè)置為Xmx的3、4分之一,等同于-XX:NewSize 和 -XX:MaxNewSize ,其實為young區(qū)大小 |
-XX | CMSInitiatingOccupancyFraction=70 :使用cms作為垃圾回收使用70%后開始CMS收集 |
-XX | SurvivorRatio=2: 生還者池的大小,默認是2 |