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
ConstructorsConstructorDescriptionMemoryUsage(long init, long used, long committed, long max) 构造一个MemoryUsage对象。 -
Method Summary
Modifier and TypeMethodDescriptionstatic MemoryUsagefrom(CompositeData cd) 返回由给定CompositeData表示的MemoryUsage对象。long返回为Java虚拟机使用而保留的内存量(以字节为单位)。longgetInit()返回Java虚拟机在启动期间从操作系统请求的内存量(以字节为单位)。longgetMax()返回可用于内存管理的最大内存量(以字节为单位)。longgetUsed()返回已使用的内存量(以字节为单位)。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.Longused java.lang.Longcommitted java.lang.Longmax java.lang.Long- 参数:
-
cd- 表示MemoryUsage的CompositeData - 返回:
-
如果
cd不为null,则由cd表示的MemoryUsage对象;否则为null。 - 抛出:
-
IllegalArgumentException- 如果cd不表示具有上述属性的MemoryUsage。
-