专业的编程技术博客社区

网站首页 > 博客文章 正文

JVM快速调优手册之四:堆内存分配的CMS公式解析

baijin 2024-09-04 01:51:05 博客文章 7 ℃ 0 评论

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

参数

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表