您好,登錄后才能下訂單哦!
Java堆由Perm區和Heap區組成,Heap區由Old區和New區(也叫Young區)組成,New區由Eden區、From區和To區(Survivor)組成。
Eden區用于存放新生成的對象。Eden中的對象生命不會超過一次Minor GC。
Survivor Space 有兩個,存放每次垃圾回收后存活的對象,即圖的S0和S1。
Old Generation Old區,也稱老生代,主要存放應用程序中生命周期長的存活對象
將EDEN與From survivor中的存活對象存入To survivor區時,To survivor區的空間不足,
再次晉升到old gen區,而old gen區內存也不夠的情況下產生了promontion faild從而導致full gc.那可以推斷出:eden+from survivor < old gen區剩余內存時,
不會出現promontion faild的情況。
即:
(Xmx-Xmn)*(1-CMSInitiatingOccupancyFraction/100)>=(Xmn-Xmn/(SurvivorRatior+2))
進而推斷出:
CMSInitiatingOccupancyFraction <=((Xmx-Xmn)-(Xmn-Xmn/(SurvivorRatior+2)))/(Xmx-Xmn)*100
Xmx-Xmn:Old區大小。
CMSInitiatingOccupancyFraction/100:Old區百分之多少時,cms開始gc
1-CMSInitiatingOccupancyFraction/100: Old區開始gc回收時剩余空間百分比
(Xmx-Xmn)*(1-CMSInitiatingOccupancyFraction/100): Old區開始gc回收時剩余空間大小
(Xmn-Xmn/(SurvivorRatior+2)): eden+from survivor區的大小
-Xmx :java heap最大值。建議均設為物理內存的80%。不可超過物理內存。
-Xmn:java heap最小值,一般設置為Xmx的3、4分之一,等同于-XX:NewSize 和 -XX:MaxNewSize ,其實為young區大小。
-XX:CMSInitiatingOccupancyFraction=70 :使用cms作為垃圾回收使用70%后開始CMS收集。
-XX:SurvivorRatio=2: 生還者池的大小,默認是2。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。