【发布时间】:2017-03-05 06:35:40
【问题描述】:
在 jvisual vm 中,我在 Monitor>Heap 下看到三个属性,我看到 3 个属性用不同的数字描述内存细节
- 尺寸:?
- Used :- 我相信这是实际使用的内存
- Max :- 我相信这是分配给 java 进程的最大堆大小(用 Xmx 指定)
我不确定实际描绘的是什么尺寸?
【问题讨论】:
标签: java performance memory heap-memory jvisualvm
在 jvisual vm 中,我在 Monitor>Heap 下看到三个属性,我看到 3 个属性用不同的数字描述内存细节
我不确定实际描绘的是什么尺寸?
【问题讨论】:
标签: java performance memory heap-memory jvisualvm
三个属性可以定义如下:
确实,当您启动 JVM 时,初始堆大小(可以使用 -Xms 定义)将是初始的总保留堆大小,然后根据您的应用程序的行为,它可能需要增加总保留大小,直到达到最大大小,如果仍然不够,您可以获得 OOME。
【讨论】:
Size 描述了分配给 java 进程的堆块大小。尝试使用 -Xms 512m 或 1024m,然后您的开始大小将是 512m,但使用的内存可能要低得多。一旦使用的内存增长,堆大小调整就会主动发生,以便可以将内存分配给活动对象。
就像您拥有最大容量为 30 升的气罐。但是你知道现在你可能只需要 20 升的行程,但实际使用的是 5 升
【讨论】:
堆大小是您正在运行的应用程序的实际堆大小。
已用堆是堆大小的已用部分。
最大堆大小 是应用程序堆大小可以拥有的最大值(可以由参数option -Xmx 定义)。
在监控 java 应用程序的内存使用情况时,您会发现 堆大小 在应用程序运行期间可能会发生变化。它不能大于最大堆大小。有关示例分析(应用程序监控),请参见下图:
【讨论】: