/* * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package java.lang.management; import javax.management.openmbean.CompositeData; import sun.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). * | *
* +----------------------------------------------+ * +//////////////// | + * +//////////////// | + * +----------------------------------------------+ * * |--------| * init * |---------------| * used * |---------------------------| * committed * |----------------------------------------------| * max ** *
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. * * @return the maximum amount of memory in bytes; * -1 if undefined. */ public long getMax() { return max; }; /** * Returns a descriptive representation of this memory usage. */ public String toString() { StringBuffer buf = new StringBuffer(); 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)"); return buf.toString(); } /** * Returns a MemoryUsage object represented by the * given CompositeData. The given CompositeData * must contain the following attributes: * *
** * @param cd CompositeData representing a MemoryUsage * * @throws IllegalArgumentException if cd does not * represent a MemoryUsage with the attributes described * above. * * @return a MemoryUsage object represented by cd * if cd is not null; * null otherwise. */ public static MemoryUsage from(CompositeData cd) { if (cd == null) { return null; } if (cd instanceof MemoryUsageCompositeData) { return ((MemoryUsageCompositeData) cd).getMemoryUsage(); } else { return new MemoryUsage(cd); } } }*
** *Attribute Name *Type ** *init *java.lang.Long ** *used *java.lang.Long ** *committed *java.lang.Long ** *max *java.lang.Long *