Used vs Max vs Size -Jvisualvm?

Used vs Max vs Size -Jvisualvm?

在 jvisual vm 中,我在 Monitor>Heap 下看到三个属性,我看到 3 个描述内存详细信息的属性都具有不同的数字

  1. 尺码:?[​​=18=]
  2. 已用:- 我相信这是实际使用的内存
  3. Max :- 我相信这是分配给 java 进程的最大堆大小(用 Xmx 指定)

我不确定实际描绘的尺寸是多少?

三个属性可以定义为:

  1. 大小:实际总保留堆大小
  2. Used:实际使用的堆大小。
  3. Max: Java堆的最大大小(年轻代+老年代)

确实,当您启动 JVM 时,初始堆大小(可以用 -Xms 定义)将是初始 总保留堆大小,然后根据您的应用程序的行为,它可能需要增加 总保留大小 直到它达到最大大小,如果仍然不够,您可以得到 OOME。

Size 描述分配给 java 进程的堆块大小。尝试使用 -Xms 512m 或 1024m 然后你的大小开始将是 512m 但使用的内存可能会低得多。一旦使用的内存增长,就会主动调整堆大小,以便将内存分配给活动对象。

就像你有最大容量为 30 升的油箱。但是你知道现在你可能只需要 20 升旅行但实际使用是 5 升

堆大小 是您的 运行 应用程序拥有的实际堆大小。
Used heap 是堆大小的已用部分。
最大堆大小 是应用程序的堆大小可以具有的最大值(可以由 arg option -Xmx 定义)。 当监视 java 应用程序的内存使用情况时,您会发现 堆大小 可能在应用程序 运行 期间发生变化。它不能大于 最大堆大小。有关示例分析(应用程序监控),请参见下图: