类 MemoryUsage

java.lang.Object
java.lang.management.MemoryUsage

public class MemoryUsage extends Object
MemoryUsage 对象表示内存使用情况的快照。 MemoryUsage类的实例通常由用于获取Java虚拟机的单个内存池或Java虚拟机整体的堆或非堆内存的内存使用信息的方法构造。

MemoryUsage 对象包含四个值:

描述 MemoryUsage 对象内容
Value Description
init 表示 Java 虚拟机在启动期间从操作系统请求的用于内存管理的初始内存量(以字节为单位)。 Java 虚拟机可能会向操作系统请求额外的内存,也可能会随着时间的推移向系统释放内存。 init 的值可能未定义。
used 表示当前使用的内存量(以字节为单位)。
committed 表示保证可供 Java 虚拟机使用的内存量(以字节为单位)。提交的内存量可能会随时间变化(增加或减少)。 Java 虚拟机可能会向系统释放内存,并且 committed 可能小于 initcommitted 将始终大于或等于 used
max 表示可用于内存管理的最大内存量(以字节为单位)。它的值可能未定义。如果已定义,最大内存量可能会随时间变化。如果定义了 max,则使用和提交的内存量将始终小于或等于 max。如果内存分配尝试增加已用内存,那么即使 used <= max 仍然为真(例如,当系统虚拟内存不足时),used > committed 也可能会失败。
下面是一张显示内存池示例的图片:
    +----------------------------------------------+
    +////////////////      |         +
    +////////////////      |         +
    +----------------------------------------------+

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

MXBean 映射

MemoryUsage 映射到具有 from 方法中指定的属性的 CompositeData
自从:
1.5
  • 构造方法总结

    构造方法
    构造方法
    描述
    MemoryUsage(long init, long used, long committed, long max)
    构造一个 MemoryUsage 对象。
  • 方法总结

    修饰符和类型
    方法
    描述
    static MemoryUsage
    返回由给定的 CompositeData 表示的 MemoryUsage 对象。
    long
    返回提交给 Java 虚拟机使用的内存量(以字节为单位)。
    long
    返回 Java 虚拟机最初从操作系统请求的用于内存管理的内存量(以字节为单位)。
    long
    返回可用于内存管理的最大内存量(以字节为单位)。
    long
    以字节为单位返回已用内存量。
    返回此内存使用情况的描述性表示。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • 构造方法详细信息

    • MemoryUsage

      public MemoryUsage(long init, long used, long committed, long max)
      构造一个 MemoryUsage 对象。
      参数:
      init - Java 虚拟机分配的初始内存量(以字节为单位);或者 -1 如果未定义。
      used - 已用内存量(以字节为单位)。
      committed - 提交的内存量(以字节为单位)。
      max - 可以使用的最大内存量(以字节为单位);或者 -1 如果未定义。
      抛出:
      IllegalArgumentException - 如果
      • initmax 的值是负数但不是 -1 ;或者
      • usedcommitted 的值为负;或者
      • used 大于 committed 的值;或者
      • committed 大于 max max 的值(如果已定义)。
  • 方法详情

    • getInit

      public long getInit()
      返回 Java 虚拟机最初从操作系统请求的用于内存管理的内存量(以字节为单位)。如果初始内存大小未定义,则此方法返回 -1
      返回:
      内存的初始大小(以字节为单位); -1 如果未定义。
    • getUsed

      public long getUsed()
      以字节为单位返回已用内存量。
      返回:
      以字节为单位的已用内存量。
    • getCommitted

      public long getCommitted()
      返回提交给 Java 虚拟机使用的内存量(以字节为单位)。此内存量保证供 Java 虚拟机使用。
      返回:
      提交的内存量(以字节为单位)。
    • getMax

      public long getMax()
      返回可用于内存管理的最大内存量(以字节为单位)。如果未定义最大内存大小,则此方法返回 -1

      如果该内存量大于已提交的内存量,则不能保证该内存量可用于内存管理。即使使用的内存量不超过此最大大小,Java 虚拟机也可能无法分配内存。

      返回:
      以字节为单位的最大内存量; -1 如果未定义。
    • toString

      public String  toString()
      返回此内存使用情况的描述性表示。
      重写:
      toString 在类 Object
      返回:
      对象的字符串表示形式。
    • from

      public static MemoryUsage  from(CompositeData  cd)
      返回由给定的 CompositeData 表示的 MemoryUsage 对象。给定的 CompositeData 必须包含以下属性:
      给定 CompositeData 包含的属性和类型
      属性名称 Type
      在里面 java.lang.Long
      用过的 java.lang.Long
      committed java.lang.Long
      最大限度 java.lang.Long
      参数:
      cd - CompositeData 代表一个 MemoryUsage
      返回:
      如果 cd 不是 null,则由 cd 表示的 MemoryUsage 对象; null否则。
      抛出:
      IllegalArgumentException - 如果 cd 不代表具有上述属性的 MemoryUsage