已使用、已提交和最大堆内存之间的差异

2025/04/02

1. 概述

在这篇简短的文章中,我们将了解JVM中各种内存大小指标之间的差异。

首先,我们将讨论自适应大小的工作原理,然后我们将评估最大大小、已使用大小和已提交大小之间的差异。

2. 最大大小和自适应大小

两个值控制JVM堆的大小一个通过-Xms标志指定的初始值,另一个由-Xmx调整标志控制的最大值

如果我们不指定这些标志,那么JVM将为它们选择默认值。这些默认值取决于底层操作系统、可用RAM量,当然还有JVM实现本身:

无论实际大小和默认值如何,堆大小都以初始大小开始。当我们分配更多对象时,堆大小可能会增长以适应它。但是,堆大小不能超过最大堆大小。

简而言之,最大堆大小是通过-Xmx标志指定的大小。此外,当我们没有明确指定-Xmx时,JVM会计算默认的最大大小

3. 使用大小

现在,假设我们在程序启动后分配了一些对象,堆大小可能会稍微增大以容纳新对象:

已用空间是Java对象当前占用的内存量,它始终小于或等于最大大小。

4. 已提交大小

已提交大小是保证可供Java虚拟机使用的内存量,已提交内存大小始终大于或等于已使用大小。

5. 总结

在这篇简短的文章中,我们了解了最大堆大小、已用堆大小和已提交堆大小之间的区别。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章