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記憶體
- 【Spark篇】---Spark調優之程式碼調優,資料本地化調優,記憶體調優,SparkShuffle調優,Executor的堆外記憶體調優Spark記憶體
- java jvm 記憶體分配JavaJVM記憶體
- Java 堆疊記憶體分配Java記憶體
- 【JVM之記憶體與垃圾回收篇】堆JVM記憶體
- 遺失的JVM堆記憶體JVM記憶體
- oracle 記憶體分配和調優 總結Oracle記憶體
- JVM效能調優,記憶體分析工具JVM記憶體
- JVM堆記憶體詳解JVM記憶體
- JVM堆記憶體設定JVM記憶體
- JVM原理講解和調優,記憶體管理和垃圾回收,記憶體調優JVM記憶體
- javascript堆疊記憶體分配的區別JavaScript記憶體
- 探索JVM的垃圾回收(堆記憶體)JVM記憶體
- 效能調優(cpu/IO/JVM記憶體分析)JVM記憶體
- 8.JVM記憶體分配機制超詳細解析JVM記憶體
- JVM讀書筆記之垃圾收集與記憶體分配JVM筆記記憶體
- JVM GC 與 記憶體分配策略JVMGC記憶體
- JVM 堆記憶體設定原理JVM記憶體
- JVM基礎:JVM記憶體組成及分配JVM記憶體
- JVM垃圾回收和記憶體分配策略JVM記憶體
- JAVA物件在JVM中記憶體分配Java物件JVM記憶體
- JVM堆外記憶體問題排查JVM記憶體
- eclipse設定JVM記憶體堆EclipseJVM記憶體
- jvm堆記憶體和GC簡介JVM記憶體GC
- 要點提煉| 理解JVM之GC&記憶體分配JVMGC記憶體
- JVM原始碼分析之堆外記憶體完全解讀JVM原始碼記憶體
- Oracle記憶體分配與調整Oracle記憶體
- 記憶體分配策略中,堆和棧的區別記憶體
- 一個可以參考的JVM記憶體分配JVM記憶體
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化