【问题标题】:Clarification of meaning new JVM memory parameters InitialRAMPercentage and MinRAMPercentage澄清新JVM内存参数InitialRAMPercentage和MinRAMPercentage的含义
【发布时间】:2019-06-14 23:30:46
【问题描述】:

参考: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 伙计们似乎也没有完全解析这些选项的意图,因为我收集了herehere。他们似乎选择干脆不实施 MinRAMPercentage afaics。

那么:设置 MinRAMPercentage 的真正预期用途和效果是什么?

【问题讨论】:

    标签: java docker jvm


    【解决方案1】:

    -XX:InitialRAMPercentageInitialHeapSize / -Xms 未设置时用于calculate initial heap size

    这听起来违反直觉,但-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)
      

    The exact formula 有点复杂,因为它还考虑了其​​他因素。

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

    另见this question

    【讨论】:

    • 你如何解释这个?命令:sudo docker run --memory='10m' adoptopenjdk/openjdk11 java -XX:+PrintFlagsFinal -version | grep MaxHeapSize 结果:Picked up JAVA_TOOL_OPTIONS: -XX:+UseContainerSupport size_t MaxHeapSize = 8388608 {product} {ergonomic} openjdk version "11" 2018-09-25 OpenJDK Runtime Environment AdoptOpenJDK (build 11+28) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11+28, mixed mode) 根据你的解释 MaxHeapSize 应该是 5M 而不是 8M
    • @MichałMielec 正如我所说,还有其他因素,例如alignmentdefault generation sizes。当内存限制如此之小时,它们就会出现。
    • 如果没有明确提供 InitialHeapSize/MaxHeapSize 是否总是设置并用作 Xms/Xms?
    • @freakman 不确定我明白你的意思。请提出一个单独的问题,描述您的问题并提供一个示例。
    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多