MinHeapFreeRatio

  • 与Xminf等价,参数用来设置堆空间最小空闲比例,默认值是 40。当堆空间的空闲内存小于这个数值时,JVM 便会扩展堆空间。

MaxHeapFreeRatio

  • 与Xmaxf等价,参数用来设置堆空间最大空闲比例,默认值是 70。当堆空间的空闲内存大于这个数值时,便会压缩堆空间,得到一个较小的堆。

  1. MinHeapFreeRatio和MaxHeapFreeRatio都是一个百分比,所以范围是0~100

  2. MinHeapFreeRatio和MaxHeapFreeRatio在不同的GC算法里,它作用的范围不一样,比如G1作用于整个Heap,而SerialGC/Paralle GC/CMS GC作用在老生代

  3. MinHeapFreeRatio主要是决定GC之后相关的堆的有效内存到底要不要扩大,如果GC之后相关的堆的有效内存空闲的比例比MinHeapFreeRatio这个参数小,那相关的堆的有效内存就可能要扩容一下

  4. MaxHeapFreeRatio主要决定GC之后相关的堆的有效内存是否有必要进行缩容,如果GC之后相关的堆的有效内存的空闲的比例比MaxHeapFreeRatio这个参数大,那么就对相关的堆的有效内存可能会进行缩容

  5. 默认情况下MinHeapFreeRatio=40,MaxHeapFreeRatio=70,如果是PS GC,在默认开启自适应模式情况下,MinHeapFreeRatio=0,MaxHeapFreeRatio=100

  6. CMS GC下如果没有指定老生代固定使用率触发CMS GC的阈值,那么MinHeapFreeRatio配合CMSTriggerRatio(默认80)参数会计算出触发CMS GC的老生代使用率阈值,具体算法是((100 - MinHeapFreeRatio) + CMSTriggerRatio * MinHeapFreeRatio) / 100.0) / 100.0

  7. -Xmx-Xms相等时,-XX:MinHeapFreeRatio-XX:MaxHeapFreeRatio两个参数无效。


Xminf

  • 与MinHeapFreeRatio等价,参数用来设置堆空间最小空闲比例,默认值是 40。当堆空间的空闲内存小于这个数值时,JVM 便会扩展堆空间。
  • Xminf和MinHeapFreeRatio是等价的,如-Xminf0.4等价于-XX:MinHeapFreeRatio=40

Xmaxf

  • 与MaxHeapFreeRatio等价,参数用来设置堆空间最大空闲比例,默认值是 70。当堆空间的空闲内存大于这个数值时,便会压缩堆空间,得到一个较小的堆。
  • Xmaxf和MaxHeapFreeRatio是等价的,如-Xmaxf0.7等价于-XX:MaxHeapFreeRatio=70

MinHeapDeltaBytes

  • MinHeapDeltaBytes表示当我们要扩容或者缩容的时候,决定是否要做或者尝试扩容的时候最小扩多少,默认为192K

  1. Xminf与Xmaxf是一个小数 , 在0~1之间