【问题标题】:How does JVM calculate the committed heap memory?JVM如何计算提交的堆内存?
【发布时间】:2019-04-17 04:47:41
【问题描述】:

根据文档:https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryUsage.html

committed - 表示保证可供 Java 虚拟机使用的内存量(以字节为单位)。提交的内存量可能会随时间而变化(增加或减少)。 Java 虚拟机可能会向系统释放内存,并且提交的内存可能少于 init。 commited 将始终大于或等于 used。

但问题是JVM如何计算提交的内存?

【问题讨论】:

  • 该策略严重依赖 JVM 和 GC 版本。不同的版本给出不同的策略。
  • 你想知道JVM是如何计算它从操作系统请求的内存量或当前提交的内存量吗?
  • @dpr,我知道提交的内存量可能会随着时间而改变(增加或减少)。我想知道承诺内存增加/减少的基础。
  • @Andrew 你可以在这里找到一些相关信息:docs.oracle.com/javase/9/gctuning/…

标签: java heap-memory


【解决方案1】:

在这里你可以找到更多细节,但它并没有解释如何增加提交的堆空间的确切方式:

还有一个承诺堆大小,它充当“高水位” 标记”,一旦 JVM 无法释放空间,即使在旧的 集合/年轻集合腾出空间。 在这种情况下, 承诺堆大小增加。这个循环重复,直到 提交的堆大小匹配最大堆大小,最大空间 可分配。

https://support.mulesoft.com/s/article/Java-JVM-memory-allocation-pattern-explained

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 2016-09-05
    • 2017-02-08
    • 2019-02-11
    • 2011-12-18
    • 2020-03-13
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多