java committed used_Java类MemoryUsage查看虚拟机的使用情况

packagejava.lang.management;importjavax.management.openmbean.CompositeData;importsun.management.MemoryUsageCompositeData;/*** A MemoryUsage object represents a snapshot of memory usage.

* Instances of the MemoryUsage class are usually constructed

* by methods that are used to obtain memory usage

* information about individual memory pool of the Java virtual machine or

* the heap or non-heap memory of the Java virtual machine as a whole.

*

*

A MemoryUsage object contains four values:

*

*

*

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).

*

*

*

*

* Below is a picture showing an example of a memory pool:

*

*

 
 

* +----------------------------------------------+

* + | +

* + | +

* +----------------------------------------------+

*

* |--------|

* init

* |---------------|

* used

* |---------------------------|

* committed

* |----------------------------------------------|

* max

*

*

*

MXBean Mapping

* MemoryUsage is mapped to a {@linkCompositeData CompositeData}

* with attributes as specified in the {@link#from from} method.

*

*@authorMandy Chung

*@since1.5*/

public classMemoryUsage {private final longinit;private final longused;private final longcommitted;private final longmax;/*** Constructs a MemoryUsage object.

*

*@paraminit the initial amount of memory in bytes that

* the Java virtual machine allocates;

* or -1 if undefined.

*@paramused the amount of used memory in bytes.

*@paramcommitted the amount of committed memory in bytes.

*@parammax the maximum amount of memory in bytes that

* can be used; or -1 if undefined.

*

*@throwsIllegalArgumentException if

*

*

the value of init or max is negative

* but not -1; or

*

the value of used or committed is negative;

* or

*

used is greater than the value of committed;

* or

*

committed is greater than the value of max

* max if defined.

*

*/

public MemoryUsage(longinit,longused,longcommitted,longmax) {if (init < -1) {throw new IllegalArgumentException( "init parameter = " +init+ " is negative but not -1.");

}if (max < -1) {throw new IllegalArgumentException( "max parameter = " +max+ " is negative but not -1.");

}if (used < 0) {throw new IllegalArgumentException( "used parameter = " +used+ " is negative.");

}if (committed < 0) {throw new IllegalArgumentException( "committed parameter = " +committed+ " is negative.");

}if (used >committed) {throw new IllegalArgumentException( "used = " + used +

" should be <= committed = " +committed);

}if (max >= 0 && committed >max) {throw new IllegalArgumentException( "committed = " + committed +

" should be < max = " +max);

}this.init =init;this.used =used;this.committed =committed;this.max =max;

}/*** Constructs a MemoryUsage object from a

* {@linkCompositeData CompositeData}.*/

privateMemoryUsage(CompositeData cd) {//validate the input composite data

MemoryUsageCompositeData.validateCompositeData(cd);this.init =MemoryUsageCompositeData.getInit(cd);this.used =MemoryUsageCompositeData.getUsed(cd);this.committed =MemoryUsageCompositeData.getCommitted(cd);this.max =MemoryUsageCompositeData.getMax(cd);

}/*** Returns the amount of memory in bytes that the Java virtual machine

* initially requests from the operating system for memory management.

* This method returns -1 if the initial memory size is undefined.

*

*@returnthe initial size of memory in bytes;

* -1 if undefined.*/

public longgetInit() {returninit;

}/*** Returns the amount of used memory in bytes.

*

*@returnthe amount of used memory in bytes.

**/

public longgetUsed() {returnused;

};/*** Returns the amount of memory in bytes that is committed for

* the Java virtual machine to use. This amount of memory is

* guaranteed for the Java virtual machine to use.

*

*@returnthe amount of committed memory in bytes.

**/

public longgetCommitted() {returncommitted;

};/*** Returns the maximum amount of memory in bytes that can be

* used for memory management. This method returns -1

* if the maximum memory size is undefined.

*

*

This amount of memory is not guaranteed to be available

* for memory management if it is greater than the amount of

* committed memory. The Java virtual machine may fail to allocate

* memory even if the amount of used memory does not exceed this

* maximum size.

*

*@returnthe maximum amount of memory in bytes;

* -1 if undefined.*/

public longgetMax() {returnmax;

};/*** Returns a descriptive representation of this memory usage.*/

publicString toString() {

StringBuffer buf= newStringBuffer();

buf.append("init = " + init + "(" + (init >> 10) + "K) ");

buf.append("used = " + used + "(" + (used >> 10) + "K) ");

buf.append("committed = " + committed + "(" +(committed>> 10) + "K) ");

buf.append("max = " + max + "(" + (max >> 10) + "K)");returnbuf.toString();

}/*** Returns a MemoryUsage object represented by the

* given CompositeData. The given CompositeData

* must contain the following attributes:

*

*

*

*

*

Attribute Name

*

Type

*

*

*

init

*

java.lang.Long

*

*

*

used

*

java.lang.Long

*

*

*

committed

*

java.lang.Long

*

*

*

max

*

java.lang.Long

*

*

*

*

*@paramcd CompositeData representing a MemoryUsage

*

*@throwsIllegalArgumentException if cd does not

* represent a MemoryUsage with the attributes described

* above.

*

*@returna MemoryUsage object represented by cd

* if cd is not null;

* null otherwise.*/

public staticMemoryUsage from(CompositeData cd) {if (cd == null) {return null;

}if (cd instanceofMemoryUsageCompositeData) {return((MemoryUsageCompositeData) cd).getMemoryUsage();

}else{return newMemoryUsage(cd);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值