监视Java堆使用情况

时间:2016-03-30 10:07:39

标签: java memory-management heap-memory rhq

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

是否足以观察所提到的参数,如果不是除了使用和提交的堆使用之外应该监视的其他参数是什么。请就此提出建议。

enter image description here

1 个答案:

答案 0 :(得分:3)

  • init

    表示Java虚拟机在启动期间从操作系统请求内存管理的初始内存量(以字节为单位)。 Java虚拟机可以从操作系统请求额外的内存,并且还可以随时间向系统释放内存。 init的值可能未定义。

  • used

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

  • committed

    表示保证可供Java虚拟机使用的内存量(以字节为单位)。提交的内存量可能会随着时间的推移而变化(增加或减少)。 Java虚拟机可能会向系统释放内存,并且已提交的内存可能少于init。已提交将始终大于或等于使用。 max表示可用于内存管理的最大内存量(以字节为单位)。它的价值可能是不确定的。如果已定义,则最大内存量可能会随时间而变化。如果定义了max,则已使用和已提交的内存量将始终小于或等于max。如果内存分配试图增加使用的内存,则使用>即使已使用,也会提交< = max仍然为真(例如,当系统虚拟内存不足时)。 下面是一张显示内存池示例的图片:

    +----------------------------------------------+
    +////////////////           |                  +
    +////////////////           |                  +
    +----------------------------------------------+
    
    |--------|
       init
    |---------------|
           used
    |---------------------------|
              committed
    |----------------------------------------------|
    
  • 非堆内存(~Perm)

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