From 1020ce5944edde4364baef4d371cd4f9b0dae721 Mon Sep 17 00:00:00 2001 From: doko Date: Sat, 28 Jun 2008 13:29:13 +0000 Subject: libjava/ 2008-06-28 Matthias Klose Import GNU Classpath (classpath-0_97_2-release). * Regenerate class and header files. * Regenerate auto* files. * gcj/javaprims.h: Define jobjectRefType. * jni.cc (_Jv_JNI_GetObjectRefType): New (stub only). (_Jv_JNIFunctions): Initialize GetObjectRefType. * gnu/classpath/jdwp/VMVirtualMachine.java, java/security/VMSecureRandom.java: Merge from classpath. * HACKING: Fix typo. * ChangeLog-2007: New file. * configure.ac: Set JAVAC, pass --disable-regen-headers to classpath. libjava/classpath/ 2008-06-28 Matthias Klose * m4/ac_prog_javac.m4: Disable check for JAVAC, when not configured with --enable-java-maintainer-mode. * aclocal.m4, configure: Regenerate. * native/jni/gstreamer-peer/Makefile.am: Do not link with libclasspathnative. * native/jni/gstreamer-peer/Makefile.in: Regenerate. * tools/Makefile.am, lib/Makefile.am: Use JAVAC for setting JCOMPILER, drop flags not understood by gcj. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@137223 138bc75d-0d04-0410-961f-82ee72b054a4 --- .../java/lang/management/VMMemoryMXBeanImpl.java | 57 ++++++++++++++++++++-- .../vm/reference/gnu/java/nio/VMChannel.java | 1 - 2 files changed, 52 insertions(+), 6 deletions(-) (limited to 'libjava/classpath/vm/reference/gnu/java') diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java index 43b9ae1a100..eade26374db 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java @@ -37,8 +37,14 @@ exception statement from your version. */ package gnu.java.lang.management; +import java.lang.management.ManagementFactory; +import java.lang.management.MemoryPoolMXBean; +import java.lang.management.MemoryType; import java.lang.management.MemoryUsage; +import java.util.Iterator; +import java.util.List; + /** * Provides access to information about the memory * management of the current invocation of the virtual @@ -62,10 +68,7 @@ final class VMMemoryMXBeanImpl */ static MemoryUsage getHeapMemoryUsage() { - Runtime runtime = Runtime.getRuntime(); - long totalMem = runtime.totalMemory(); - return new MemoryUsage(-1, totalMem - runtime.freeMemory(), - totalMem, runtime.maxMemory()); + return getUsage(MemoryType.HEAP); } /** @@ -76,7 +79,10 @@ final class VMMemoryMXBeanImpl * @return an {@link java.lang.management.MemoryUsage} instance * for non-heap memory. */ - static native MemoryUsage getNonHeapMemoryUsage(); + static MemoryUsage getNonHeapMemoryUsage() + { + return getUsage(MemoryType.NON_HEAP); + } /** * Returns the number of objects ready to be garbage collected. @@ -106,4 +112,45 @@ final class VMMemoryMXBeanImpl */ static native void setVerbose(boolean verbose); + /** + * Totals the memory usage from all the pools that match + * the given type. + * + * @param type the type of memory pools to accumulate + * (heap or non-heap). + * @return the memory usage overall. + */ + private static MemoryUsage getUsage(MemoryType type) { + long init = 0, committed = 0, used = 0, max = 0; + Iterator pools = + ManagementFactory.getMemoryPoolMXBeans().iterator(); + while (pools.hasNext()) + { + MemoryPoolMXBean pool = (MemoryPoolMXBean) pools.next(); + if (pool.getType() == type) + { + MemoryUsage usage = pool.getUsage(); + if (init != -1) + { + long poolInit = usage.getInit(); + if (poolInit == -1) + init = -1; + else + init += poolInit; + } + committed += usage.getCommitted(); + used += usage.getUsed(); + if (max != -1) + { + long poolMax = usage.getMax(); + if (poolMax == -1) + max = -1; + else + max += poolMax; + } + } + } + return new MemoryUsage(init, used, committed, max); + } + } diff --git a/libjava/classpath/vm/reference/gnu/java/nio/VMChannel.java b/libjava/classpath/vm/reference/gnu/java/nio/VMChannel.java index 1f69877b6ba..a9d1452b72d 100644 --- a/libjava/classpath/vm/reference/gnu/java/nio/VMChannel.java +++ b/libjava/classpath/vm/reference/gnu/java/nio/VMChannel.java @@ -256,7 +256,6 @@ public final class VMChannel * Assumes the that buffer list constains DirectBuffers. Will perform * as gathering write. * - * @param fd * @param srcs * @param offset * @param length -- cgit v1.2.3