JVM快速調優手冊v1.0之四:堆記憶體分配的CMS公式解析
一.JVM 堆記憶體組成
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。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31537832/viewspace-2154705/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JVM快速調優手冊v1.0之三:記憶體分配策略JVM記憶體
- JVM快速調優手冊v1.0JVM
- JVM快速調優手冊v1.0之六:JVM引數設定、分析JVM
- 【JVM】堆體系結構及其記憶體調優JVM記憶體
- JVM快速調優手冊v1.0之五:ParNew收集器+CMS收集器的產品案例分析(響應時間優先)JVM
- JVM快速調優手冊v1.0之二:常見的垃圾收集器JVM
- jvm 堆記憶體JVM記憶體
- JVM 之 記憶體分配與回收策略JVM記憶體
- 【JVM之記憶體與垃圾回收篇】堆JVM記憶體
- JVM效能調優,記憶體分析工具JVM記憶體
- JVM堆記憶體詳解JVM記憶體
- javascript堆疊記憶體分配的區別JavaScript記憶體
- 8.JVM記憶體分配機制超詳細解析JVM記憶體
- JVM讀書筆記之垃圾收集與記憶體分配JVM筆記記憶體
- 探索JVM的垃圾回收(堆記憶體)JVM記憶體
- JVM GC 與 記憶體分配策略JVMGC記憶體
- 效能調優(cpu/IO/JVM記憶體分析)JVM記憶體
- eclipse設定JVM記憶體堆EclipseJVM記憶體
- JVM 堆記憶體設定原理JVM記憶體
- JVM垃圾回收和記憶體分配策略JVM記憶體
- 要點提煉| 理解JVM之GC&記憶體分配JVMGC記憶體
- jvm堆記憶體和GC簡介JVM記憶體GC
- JVM堆外記憶體問題排查JVM記憶體
- 記憶體分配策略中,堆和棧的區別記憶體
- JVM原始碼分析之堆外記憶體完全解讀JVM原始碼記憶體
- 一個可以參考的JVM記憶體分配JVM記憶體
- jvm:記憶體模型、記憶體分配及GC垃圾回收機制JVM記憶體模型GC
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- 淺談JVM記憶體分配與垃圾回收JVM記憶體
- JVM——垃圾收集器與記憶體分配JVM記憶體
- 關於JVM堆外記憶體的一切JVM記憶體
- JVM深入淺出 -- Java記憶體分配機制JVMJava記憶體
- JVM 垃圾收集器與記憶體分配策略JVM記憶體
- 一夜搞懂 | JVM GC&記憶體分配JVMGC記憶體
- JVM垃圾回收器、記憶體分配與回收策略JVM記憶體
- [仁潤雲技術團隊]JVM之GC與記憶體分配策略JVMGC記憶體
- 探索JVM的堆記憶體分佈:官方圖片展示JVM記憶體
- mysql優化手冊v1.0MySql優化