java.lang.Object
java.lang.management.MemoryUsage
一个
下面是一个显示内存池示例的图片:
MemoryUsage
对象表示内存使用的快照。MemoryUsage
类的实例通常由用于获取关于Java虚拟机的各个内存池或整个Java虚拟机的堆内存或非堆内存的内存使用信息的方法构造。
MemoryUsage
对象包含四个值:
值 | 描述 |
---|---|
init |
表示Java虚拟机在启动期间从操作系统请求用于内存管理的初始内存量(以字节为单位)。Java虚拟机可能会从操作系统请求额外的内存,并随着时间释放内存给系统。 init 的值可能未定义。 |
used |
表示当前使用的内存量(以字节为单位)。 |
committed |
表示Java虚拟机保证可供其使用的内存量(以字节为单位)。承诺的内存量可能随时间改变(增加或减少)。Java虚拟机可能释放内存给系统,committed 可能小于init 。 committed 将始终大于或等于used 。 |
max |
表示可用于内存管理的最大内存量(以字节为单位)。其值可能未定义。如果定义了,最大内存量可能随时间改变。如果max 已定义,则使用和承诺的内存量始终小于或等于max 。如果尝试增加已使用内存以使used > committed ,即使used <= max 仍为真(例如,当系统虚拟内存不足时),内存分配可能会失败。 |
+----------------------------------------------+ +//////////////// | + +//////////////// | + +----------------------------------------------+ |--------| init |---------------| used |---------------------------| committed |----------------------------------------------| max
MXBean映射
MemoryUsage
被映射为一个具有指定属性的CompositeData
,属性在from
方法中指定。
- 自版本:
- 1.5
-
Constructor Summary
ConstructorDescriptionMemoryUsage
(long init, long used, long committed, long max) 构造一个MemoryUsage
对象。 -
Method Summary
Modifier and TypeMethodDescriptionstatic MemoryUsage
from
(CompositeData cd) 返回由给定CompositeData
表示的MemoryUsage
对象。long
返回为Java虚拟机使用而保留的内存量(以字节为单位)。long
getInit()
返回Java虚拟机在启动期间从操作系统请求的内存量(以字节为单位)。long
getMax()
返回可用于内存管理的最大内存量(以字节为单位)。long
getUsed()
返回已使用的内存量(以字节为单位)。toString()
返回此内存使用的描述性表示。
-
Constructor Details
-
MemoryUsage
public MemoryUsage(long init, long used, long committed, long max) 构造一个MemoryUsage
对象。- 参数:
-
init
- Java虚拟机分配的初始内存量(以字节为单位);如果未定义,则为-1
。 -
used
- 使用的内存量(以字节为单位)。 -
committed
- 承诺的内存量(以字节为单位)。 -
max
- 可用内存的最大量(以字节为单位);如果未定义,则为-1
。 - 抛出:
-
IllegalArgumentException
- 如果init
或max
的值为负数但不是-1
;或used
或committed
的值为负数;或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
返回此内存使用的描述性表示。 -
from
返回由给定CompositeData
表示的MemoryUsage
对象。给定的CompositeData
必须包含以下属性:属性名称 类型 init java.lang.Long
used java.lang.Long
committed java.lang.Long
max java.lang.Long
- 参数:
-
cd
- 表示MemoryUsage
的CompositeData
- 返回:
-
如果
cd
不为null
,则由cd
表示的MemoryUsage
对象;否则为null
。 - 抛出:
-
IllegalArgumentException
- 如果cd
不表示具有上述属性的MemoryUsage
。
-