--- old/src/jdk.snmp/share/classes/sun/management/snmp/jvminstr/JvmMemPoolEntryImpl.java 2014-10-15 14:06:48.000000000 +0200 +++ /dev/null 2014-10-15 14:06:48.000000000 +0200 @@ -1,506 +0,0 @@ -/* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package sun.management.snmp.jvminstr; - -// java imports -// -import java.util.Map; - -// jmx imports -// -import com.sun.jmx.snmp.SnmpStatusException; -import com.sun.jmx.snmp.SnmpDefinitions; - -// jdmk imports -// - -import java.lang.management.MemoryUsage; -import java.lang.management.MemoryType; -import java.lang.management.MemoryPoolMXBean; - -import sun.management.snmp.jvmmib.JvmMemPoolEntryMBean; -import sun.management.snmp.jvmmib.EnumJvmMemPoolState; -import sun.management.snmp.jvmmib.EnumJvmMemPoolType; -import sun.management.snmp.jvmmib.EnumJvmMemPoolThreshdSupport; -import sun.management.snmp.jvmmib.EnumJvmMemPoolCollectThreshdSupport; -import sun.management.snmp.util.MibLogger; -import sun.management.snmp.util.JvmContextFactory; - -/** - * The class is used for implementing the "JvmMemPoolEntry" group. - */ -public class JvmMemPoolEntryImpl implements JvmMemPoolEntryMBean { - - /** - * Variable for storing the value of "JvmMemPoolIndex". - * - * "An index value opaquely computed by the agent which uniquely - * identifies a row in the jvmMemPoolTable. - * " - * - */ - final protected int jvmMemPoolIndex; - - - final static String memoryTag = "jvmMemPoolEntry.getUsage"; - final static String peakMemoryTag = "jvmMemPoolEntry.getPeakUsage"; - final static String collectMemoryTag = - "jvmMemPoolEntry.getCollectionUsage"; - final static MemoryUsage ZEROS = new MemoryUsage(0,0,0,0); - - final String entryMemoryTag; - final String entryPeakMemoryTag; - final String entryCollectMemoryTag; - - MemoryUsage getMemoryUsage() { - try { - final Map m = JvmContextFactory.getUserData(); - - if (m != null) { - final MemoryUsage cached = (MemoryUsage) - m.get(entryMemoryTag); - if (cached != null) { - log.debug("getMemoryUsage",entryMemoryTag+ - " found in cache."); - return cached; - } - - MemoryUsage u = pool.getUsage(); - if (u == null) u = ZEROS; - - m.put(entryMemoryTag,u); - return u; - } - // Should never come here. - // Log error! - log.trace("getMemoryUsage", "ERROR: should never come here!"); - return pool.getUsage(); - } catch (RuntimeException x) { - log.trace("getMemoryUsage", - "Failed to get MemoryUsage: " + x); - log.debug("getMemoryUsage",x); - throw x; - } - - } - - MemoryUsage getPeakMemoryUsage() { - try { - final Map m = JvmContextFactory.getUserData(); - - if (m != null) { - final MemoryUsage cached = (MemoryUsage) - m.get(entryPeakMemoryTag); - if (cached != null) { - if (log.isDebugOn()) - log.debug("getPeakMemoryUsage", - entryPeakMemoryTag + " found in cache."); - return cached; - } - - MemoryUsage u = pool.getPeakUsage(); - if (u == null) u = ZEROS; - - m.put(entryPeakMemoryTag,u); - return u; - } - // Should never come here. - // Log error! - log.trace("getPeakMemoryUsage", "ERROR: should never come here!"); - return ZEROS; - } catch (RuntimeException x) { - log.trace("getPeakMemoryUsage", - "Failed to get MemoryUsage: " + x); - log.debug("getPeakMemoryUsage",x); - throw x; - } - - } - - MemoryUsage getCollectMemoryUsage() { - try { - final Map m = JvmContextFactory.getUserData(); - - if (m != null) { - final MemoryUsage cached = (MemoryUsage) - m.get(entryCollectMemoryTag); - if (cached != null) { - if (log.isDebugOn()) - log.debug("getCollectMemoryUsage", - entryCollectMemoryTag + " found in cache."); - return cached; - } - - MemoryUsage u = pool.getCollectionUsage(); - if (u == null) u = ZEROS; - - m.put(entryCollectMemoryTag,u); - return u; - } - // Should never come here. - // Log error! - log.trace("getCollectMemoryUsage", - "ERROR: should never come here!"); - return ZEROS; - } catch (RuntimeException x) { - log.trace("getPeakMemoryUsage", - "Failed to get MemoryUsage: " + x); - log.debug("getPeakMemoryUsage",x); - throw x; - } - - } - - final MemoryPoolMXBean pool; - - /** - * Constructor for the "JvmMemPoolEntry" group. - */ - public JvmMemPoolEntryImpl(MemoryPoolMXBean mp, final int index) { - this.pool=mp; - this.jvmMemPoolIndex = index; - this.entryMemoryTag = memoryTag + "." + index; - this.entryPeakMemoryTag = peakMemoryTag + "." + index; - this.entryCollectMemoryTag = collectMemoryTag + "." + index; - } - - /** - * Getter for the "JvmMemPoolMaxSize" variable. - */ - public Long getJvmMemPoolMaxSize() throws SnmpStatusException { - final long val = getMemoryUsage().getMax(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolUsed" variable. - */ - public Long getJvmMemPoolUsed() throws SnmpStatusException { - final long val = getMemoryUsage().getUsed(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolInitSize" variable. - */ - public Long getJvmMemPoolInitSize() throws SnmpStatusException { - final long val = getMemoryUsage().getInit(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolCommitted" variable. - */ - public Long getJvmMemPoolCommitted() throws SnmpStatusException { - final long val = getMemoryUsage().getCommitted(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolPeakMaxSize" variable. - */ - public Long getJvmMemPoolPeakMaxSize() throws SnmpStatusException { - final long val = getPeakMemoryUsage().getMax(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolPeakUsed" variable. - */ - public Long getJvmMemPoolPeakUsed() throws SnmpStatusException { - final long val = getPeakMemoryUsage().getUsed(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolPeakCommitted" variable. - */ - public Long getJvmMemPoolPeakCommitted() throws SnmpStatusException { - final long val = getPeakMemoryUsage().getCommitted(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolCollectMaxSize" variable. - */ - public Long getJvmMemPoolCollectMaxSize() throws SnmpStatusException { - final long val = getCollectMemoryUsage().getMax(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolCollectUsed" variable. - */ - public Long getJvmMemPoolCollectUsed() throws SnmpStatusException { - final long val = getCollectMemoryUsage().getUsed(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolCollectCommitted" variable. - */ - public Long getJvmMemPoolCollectCommitted() throws SnmpStatusException { - final long val = getCollectMemoryUsage().getCommitted(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolThreshold" variable. - */ - public Long getJvmMemPoolThreshold() throws SnmpStatusException { - if (!pool.isUsageThresholdSupported()) - return JvmMemoryImpl.Long0; - final long val = pool.getUsageThreshold(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Setter for the "JvmMemPoolThreshold" variable. - */ - public void setJvmMemPoolThreshold(Long x) throws SnmpStatusException { - final long val = x.longValue(); - if (val < 0 ) - throw new SnmpStatusException(SnmpDefinitions.snmpRspWrongValue); - // This should never throw an exception has the checks have - // already been performed in checkJvmMemPoolThreshold(). - // - pool.setUsageThreshold(val); - } - - /** - * Checker for the "JvmMemPoolThreshold" variable. - */ - public void checkJvmMemPoolThreshold(Long x) throws SnmpStatusException { - // if threshold is -1, it means that low memory detection is not - // supported. - - if (!pool.isUsageThresholdSupported()) - throw new - SnmpStatusException(SnmpDefinitions.snmpRspInconsistentValue); - final long val = x.longValue(); - if (val < 0 ) - throw new SnmpStatusException(SnmpDefinitions.snmpRspWrongValue); - } - - /** - * Getter for the "JvmMemPoolThreshdSupport" variable. - */ - public EnumJvmMemPoolThreshdSupport getJvmMemPoolThreshdSupport() - throws SnmpStatusException { - if (pool.isUsageThresholdSupported()) - return EnumJvmMemPoolThreshdSupported; - else - return EnumJvmMemPoolThreshdUnsupported; - } - - /** - * Getter for the "JvmMemPoolThreshdCount" variable. - */ - public Long getJvmMemPoolThreshdCount() - throws SnmpStatusException { - if (!pool.isUsageThresholdSupported()) - return JvmMemoryImpl.Long0; - final long val = pool.getUsageThresholdCount(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Getter for the "JvmMemPoolCollectThreshold" variable. - */ - public Long getJvmMemPoolCollectThreshold() throws SnmpStatusException { - if (!pool.isCollectionUsageThresholdSupported()) - return JvmMemoryImpl.Long0; - final long val = pool.getCollectionUsageThreshold(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - /** - * Setter for the "JvmMemPoolCollectThreshold" variable. - */ - public void setJvmMemPoolCollectThreshold(Long x) - throws SnmpStatusException { - final long val = x.longValue(); - if (val < 0 ) - throw new SnmpStatusException(SnmpDefinitions.snmpRspWrongValue); - // This should never throw an exception has the checks have - // already been performed in checkJvmMemPoolCollectThreshold(). - // - pool.setCollectionUsageThreshold(val); - } - - /** - * Checker for the "JvmMemPoolCollectThreshold" variable. - */ - public void checkJvmMemPoolCollectThreshold(Long x) - throws SnmpStatusException { - // if threshold is -1, it means that low memory detection is not - // supported. - - if (!pool.isCollectionUsageThresholdSupported()) - throw new - SnmpStatusException(SnmpDefinitions.snmpRspInconsistentValue); - final long val = x.longValue(); - if (val < 0 ) - throw new SnmpStatusException(SnmpDefinitions.snmpRspWrongValue); - } - - /** - * Getter for the "JvmMemPoolThreshdSupport" variable. - */ - public EnumJvmMemPoolCollectThreshdSupport - getJvmMemPoolCollectThreshdSupport() - throws SnmpStatusException { - if (pool.isCollectionUsageThresholdSupported()) - return EnumJvmMemPoolCollectThreshdSupported; - else - return EnumJvmMemPoolCollectThreshdUnsupported; - } - - /** - * Getter for the "JvmMemPoolCollectThreshdCount" variable. - */ - public Long getJvmMemPoolCollectThreshdCount() - throws SnmpStatusException { - if (!pool.isCollectionUsageThresholdSupported()) - return JvmMemoryImpl.Long0; - final long val = pool.getCollectionUsageThresholdCount(); - if (val > -1) return val; - else return JvmMemoryImpl.Long0; - } - - public static EnumJvmMemPoolType jvmMemPoolType(MemoryType type) - throws SnmpStatusException { - if (type.equals(MemoryType.HEAP)) - return EnumJvmMemPoolTypeHeap; - else if (type.equals(MemoryType.NON_HEAP)) - return EnumJvmMemPoolTypeNonHeap; - throw new SnmpStatusException(SnmpStatusException.snmpRspWrongValue); - } - - /** - * Getter for the "JvmMemPoolType" variable. - */ - public EnumJvmMemPoolType getJvmMemPoolType() throws SnmpStatusException { - return jvmMemPoolType(pool.getType()); - } - - /** - * Getter for the "JvmMemPoolName" variable. - */ - public String getJvmMemPoolName() throws SnmpStatusException { - return JVM_MANAGEMENT_MIB_IMPL.validJavaObjectNameTC(pool.getName()); - } - - /** - * Getter for the "JvmMemPoolIndex" variable. - */ - public Integer getJvmMemPoolIndex() throws SnmpStatusException { - return jvmMemPoolIndex; - } - - - /** - * Getter for the "JvmMemPoolState" variable. - */ - public EnumJvmMemPoolState getJvmMemPoolState() - throws SnmpStatusException { - if (pool.isValid()) - return JvmMemPoolStateValid; - else - return JvmMemPoolStateInvalid; - } - - /** - * Getter for the "JvmMemPoolPeakReset" variable. - */ - public synchronized Long getJvmMemPoolPeakReset() - throws SnmpStatusException { - return jvmMemPoolPeakReset; - } - - /** - * Setter for the "JvmMemPoolPeakReset" variable. - */ - public synchronized void setJvmMemPoolPeakReset(Long x) - throws SnmpStatusException { - final long l = x.longValue(); - if (l > jvmMemPoolPeakReset) { - final long stamp = System.currentTimeMillis(); - pool.resetPeakUsage(); - jvmMemPoolPeakReset = stamp; - log.debug("setJvmMemPoolPeakReset", - "jvmMemPoolPeakReset="+stamp); - } - } - - /** - * Checker for the "JvmMemPoolPeakReset" variable. - */ - public void checkJvmMemPoolPeakReset(Long x) throws SnmpStatusException { - } - - /* Last time peak usage was reset */ - private long jvmMemPoolPeakReset = 0; - - private final static EnumJvmMemPoolState JvmMemPoolStateValid = - new EnumJvmMemPoolState("valid"); - private final static EnumJvmMemPoolState JvmMemPoolStateInvalid = - new EnumJvmMemPoolState("invalid"); - - private static final EnumJvmMemPoolType EnumJvmMemPoolTypeHeap = - new EnumJvmMemPoolType("heap"); - private static final EnumJvmMemPoolType EnumJvmMemPoolTypeNonHeap = - new EnumJvmMemPoolType("nonheap"); - - private static final EnumJvmMemPoolThreshdSupport - EnumJvmMemPoolThreshdSupported = - new EnumJvmMemPoolThreshdSupport("supported"); - private static final EnumJvmMemPoolThreshdSupport - EnumJvmMemPoolThreshdUnsupported = - new EnumJvmMemPoolThreshdSupport("unsupported"); - - private static final EnumJvmMemPoolCollectThreshdSupport - EnumJvmMemPoolCollectThreshdSupported = - new EnumJvmMemPoolCollectThreshdSupport("supported"); - private static final EnumJvmMemPoolCollectThreshdSupport - EnumJvmMemPoolCollectThreshdUnsupported= - new EnumJvmMemPoolCollectThreshdSupport("unsupported"); - - - static final MibLogger log = new MibLogger(JvmMemPoolEntryImpl.class); -}