diff -r 000000000000 -r a61af66fc99e src/share/vm/services/memoryUsage.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/vm/services/memoryUsage.hpp Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,77 @@ +/* + * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +// A memory usage contains the following attributes about memory usage: +// initSize - represents the initial amount of memory (in bytes) that +// the Java virtual machine requests from the operating system +// for memory management. The Java virtual machine may request +// additional memory from the operating system later when appropriate. +// Its value 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). It is guaranteed to be greater than or equal +// to initSize. +// maxSize - represents the maximum amount of memory (in bytes) +// that can be used for memory management. The maximum amount of +// memory for memory management could be less than the amount of +// committed memory. Its value may be undefined. + +class MemoryUsage VALUE_OBJ_CLASS_SPEC { +private: + size_t _initSize; + size_t _used; + size_t _committed; + size_t _maxSize; + +public: + // Constructors + MemoryUsage(size_t i, size_t u, size_t c, size_t m) : + _initSize(i), _used(u), _committed(c), _maxSize(m) {}; + MemoryUsage() : + _initSize(0), _used(0), _committed(0), _maxSize(0) {}; + + size_t init_size() const { return _initSize; } + size_t used() const { return _used; } + size_t committed() const { return _committed; } + size_t max_size() const { return _maxSize; } + + inline static jlong convert_to_jlong(size_t val) { + // In the 64-bit vm, a size_t can overflow a jlong (which is signed). + jlong ret; + if (val == (size_t)-1) { + ret = -1L; + } else { + NOT_LP64(ret = val;) + LP64_ONLY(ret = MIN2(val, (size_t)max_jlong);) + } + return ret; + } + + jlong init_size_as_jlong() const { return convert_to_jlong(_initSize); } + jlong used_as_jlong() const { return convert_to_jlong(_used); } + jlong committed_as_jlong() const { return convert_to_jlong(_committed); } + jlong max_size_as_jlong() const { return convert_to_jlong(_maxSize); } +};