Module  java.management
软件包  java.lang.management

Class MemoryUsage



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

    A MemoryUsage对象包含四个值:

    Describes the MemoryUsage object content init represents the initial amount of memory (in bytes) that the Java virtual machine requests from the operating system for memory management during startup. The Java virtual machine may request additional memory from the operating system and may also release memory to the system over time. The value of init may be undefined. used represents the amount of memory currently used (in bytes). committed represents the amount of memory (in bytes) that is guaranteed to be available for use by the Java virtual machine. The amount of committed memory may change over time (increase or decrease). The Java virtual machine may release memory to the system and committed could be less than init. committed will always be greater than or equal to used. max represents the maximum amount of memory (in bytes) that can be used for memory management. Its value may be undefined. The maximum amount of memory may change over time if defined. The amount of used and committed memory will always be less than or equal to max if max is defined. A memory allocation may fail if it attempts to increase the used memory such that used > committed even if used <= max would still be true (for example, when the system is low on virtual memory).
    以下是显示内存池示例的图片:
      +----------------------------------------------+
            +////////////////           |                  +
            +////////////////           |                  +
            +----------------------------------------------+
    
            |--------|
               init
            |---------------|
                   used
            |---------------------------|
                      committed
            |----------------------------------------------|
                                max 

    MXBean映射

    MemoryUsage被映射到CompositeData作为指定具有属性from方法。
    从以下版本开始:
    1.5
    • 构造方法详细信息

      • 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​()
        返回此内存使用情况的描述性表示。
        重写:
        toStringObject
        结果
        对象的字符串表示形式。
      • from

        public static MemoryUsage from​(CompositeData cd)
        返回由给定的CompositeData表示的MemoryUsage对象。 给定的CompositeData必须包含以下属性:
        The attributes and the types the given CompositeData contains
        Attribute Name Type
        init java.lang.Long
        used java.lang.Long
        committed java.lang.Long
        max java.lang.Long
        参数
        cd - CompositeData代表 MemoryUsage
        结果
        一个MemoryUsage通过表示对象cd如果cd不是null ; 否则为null
        异常
        IllegalArgumentException - 如果 cd不代表具有上述属性的 MemoryUsage