Module java.management

Class MemoryUsage

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

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

MemoryUsage对象包含四个值:

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

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

MXBean映射

MemoryUsage被映射为一个具有指定属性的CompositeData,属性在from方法中指定。
自版本:
1.5
  • Constructor Summary

    Constructors
    Constructor
    Description
    MemoryUsage(long init, long used, long committed, long max)
    构造一个MemoryUsage对象。
  • Method Summary

    Modifier and Type
    Method
    Description
    static MemoryUsage
    返回由给定CompositeData表示的MemoryUsage对象。
    long
    返回为Java虚拟机使用而保留的内存量(以字节为单位)。
    long
    返回Java虚拟机在启动期间从操作系统请求的内存量(以字节为单位)。
    long
    getMax()
    返回可用于内存管理的最大内存量(以字节为单位)。
    long
    返回已使用的内存量(以字节为单位)。
    返回此内存使用的描述性表示。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • 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
  • Method Details

    • 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包含的属性和类型
      属性名称 类型
      init java.lang.Long
      used java.lang.Long
      committed java.lang.Long
      max java.lang.Long
      参数:
      cd - 表示MemoryUsageCompositeData
      返回:
      如果cd不为null,则由cd表示的MemoryUsage对象;否则为null
      抛出:
      IllegalArgumentException - 如果cd不表示具有上述属性的MemoryUsage