当前位置: 首页 > 面试题库 >

说明新的JVM内存参数的含义InitialRAMPercentage和MinRAMPercentage

韩佐
2023-03-14
问题内容

参考:https :
//bugs.java.com/bugdatabase/view_bug.do?bug_id=8186315

我真的很难找出MinRAMPercentage的功能,尤其是与InitialRAMPercentage相比。

我假设InitialRAMPercentage设置了启动时的堆数量,MinRAMPercentage和MaxRAMPercentage设置了允许JVM收缩/增长到的堆的上下限。

显然不是这样。当我启动JVM(使用UseContainerSupport,具有这些新的内存设置参数)时,如下所示:

java -XX:+UseContainerSupport -XX:InitialRAMPercentage=40.0 -XX:MinRAMPercentage=20.0 -XX:MaxRAMPercentage=80.0 -XX:+PrintFlagsFinal -version | grep Heap

设置InitialHeap和MaxHeap,没有找到“最小堆大小”值;因此,该MinRAMPercentage似乎从未被使用过。

超级困惑,显然我不是唯一的一个。正如我在这里和这里所收集的那样,OpenJ9帅哥似乎也没有完全解析这些选项的意图。他们似乎选择不实施MinRAMPercentage
afaics。

因此:设置MinRAMPercentage的实际预期用途和效果是什么?


问题答案:

-XX:InitialRAMPercentage未设置/ 时,用于计算初始堆大小。InitialHeapSize``-Xms

这听起来违反直觉的,但两者-XX:MaxRAMPercentage-XX:MinRAMPercentage用来计算 最大堆尺寸
MaxHeapSize/ -Xmx未设置:

  • 对于物理内存较小的系统,MaxHeapSize估计为

    phys_mem * MinRAMPercentage / 100  (if this value is less than 96M)
    
  • 否则(非小物理内存)MaxHeapSize估计为

    MAX(phys_mem * MaxRAMPercentage / 100, 96M)
    

确切的公式要复杂一些,因为它还要考虑其他因素。

注意:用于计算初始堆大小和最大堆大小的算法取决于特定的JVM版本。控制堆大小的首选方法是设置XmxXms显式。



 类似资料:
  • 我假设InitialRAMPercentage设置启动时堆的数量,MinRAMPercentage和MaxRAMPercentage设置JVM允许收缩/增长到的堆的底部和顶部限制。 显然情况并非如此。当我启动一个JVM(使用UseContainerSupport,具有这些新的内存设置参数)时,如下所示: InitialHeap和MaxHeap设置后,我无法找到“最小堆大小”值;因此,MinramP

  • 问题内容: 参考:https : //bugs.java.com/bugdatabase/view_bug.do?bug_id=8186315 我真的很难找出MinRAMPercentage的功能,尤其是与InitialRAMPercentage相比。 我假设InitialRAMPercentage设置了启动时的堆数量,MinRAMPercentage和MaxRAMPercentage设置了允许J

  • 本文向大家介绍基于PyInstaller各参数的含义说明,包括了基于PyInstaller各参数的含义说明的使用技巧和注意事项,需要的朋友参考一下 说明 以下介绍假设用户脚本为main.py,生成结果为main.exe。 有些参数实在很少用到,只列出简单介绍,具体请参阅原文。 通用参数 参数名 描述 说明 -h 显示帮助 无 -v 显示版本号 无 –distpath 生成文件放在哪里 默认:当前目

  • 在我运行java应用程序之前,我的linux空闲内存为4942356KB,我的启动参数使用-xmx2048m和-xms2048m使最大堆内存和初始堆内存为2G,但我发现在我启动应用程序之后,我的linux系统空闲内存在一步一步地减少,而不是启动后总共消耗了2G内存,谁能告诉我原因和机制? 还有一个问题,我的jvm启动参数是,启动前的空闲内存是5g,1个小时后,我发现这个应用程序已经有14053个线

  • 虚拟机: 4CPU 10GB RAM 10GB交换 Java1.7-Xms=-Xmx=6144m Tomcat 7 我们观察到JVM有一种非常奇怪的行为。JVm驻留内存开始收缩,交换使用率飙升至50%以上。 请参阅下面来自监控工具的统计数据。 http://i44.tinypic.com/206n6sp.jpg http://i44.tinypic.com/m99hl0.jpg 任何能理解这一点的

  • 本文向大家介绍java 线程池keepAliveTime的含义说明,包括了java 线程池keepAliveTime的含义说明的使用技巧和注意事项,需要的朋友参考一下 之前对线程池中属性:keepAliveTime比较模糊,而且看过之后过一段时间就会忘掉,于是就在此记录一下。 keepAliveTime的jdk中的解释为: 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。 说的让