我将监视单个节点的JVM内存利用率。
该工具(JON 3.3)具有不同的指标,例如初始堆/非堆,已提交堆/非堆,已用堆/非堆,最大堆/非堆使用情况。
我决定监视已使用的堆和已提交的堆使用情况,以观察JVM的内存性能。

如果不监视除已使用和已提交的堆使用之外的其他参数,是否足以监视提到的参数。请对此提供建议。

enter image description here

最佳答案

init

表示Java虚拟机在启动过程中从操作系统请求用于内存管理的初始内存量(以字节为单位)。 Java虚拟机可能会从操作系统请求其他内存,也可能会随时间释放内存给系统。 init的值可能是不确定的。
used

表示当前使用的内存量(以字节为单位)。
committed

表示保证可以由Java虚拟机使用的内存量(以字节为单位)。提交的内存量可能会随时间变化(增加或减少)。 Java虚拟机可能会向系统释放内存,并且提交的空间可能少于init。提交将始终大于或等于已使用。
max表示可用于内存管理的最大内存量(以字节为单位)。它的值可能是不确定的。如果定义了最大内存量,则可能会随时间变化。如果定义了max,则已使用和已提交的内存量将始终小于或等于max。如果内存分配尝试增加已使用的内存,以使used>已提交,即使使用的下图显示了内存池的示例:

+----------------------------------------------+
+////////////////           |                  +
+////////////////           |                  +
+----------------------------------------------+

|--------|
   init
|---------------|
       used
|---------------------------|
          committed
|----------------------------------------------|

非堆内存(〜彼尔姆)

另外,JVM具有堆以外的内存,称为非堆内存。它是在JVM启动时创建的,并存储每个类的结构,例如运行时常量池,字段和方法数据,方法和构造函数的代码以及内部字符串。

关于java - 监视Java堆使用情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36305653/

10-14 10:05
查看更多