1 package org.munin.plugin.jmx; 2 3 import java.lang.management.ManagementFactory; 4 import java.lang.management.MemoryMXBean; 5 import java.lang.management.MemoryUsage; 6 7 import org.munin.plugin.jmx.AbstractAnnotationGraphsProvider.Graph; 8 9 @Graph(title = "Allocated Memory", vlabel = "bytes", args = "--base 1024 -l 0", info="The sum of heap and non-heap memory currently used by the Java virtual machine.") 10 public class MemoryAllocatedTotal extends AbstractMemoryUsageProvider { MemoryAllocatedTotal(Config config)11 public MemoryAllocatedTotal(Config config) { 12 super(config); 13 } 14 15 @Override prepareValues()16 protected void prepareValues() throws Exception { 17 MemoryMXBean memoryMXBean = ManagementFactory.newPlatformMXBeanProxy(getConnection(), 18 ManagementFactory.MEMORY_MXBEAN_NAME, MemoryMXBean.class); 19 MemoryUsage heap = memoryMXBean.getHeapMemoryUsage(); 20 MemoryUsage nonHeap = memoryMXBean.getNonHeapMemoryUsage(); 21 long totalInit = heap.getInit()+nonHeap.getInit(); 22 long totalUsed = heap.getUsed() + nonHeap.getUsed(); 23 long totalCommitted = heap.getCommitted()+nonHeap.getCommitted(); 24 long totalMax = heap.getMax(); 25 if (nonHeap.getMax() == -1) { 26 totalMax += nonHeap.getCommitted(); 27 } else { 28 totalMax += nonHeap.getMax(); 29 } 30 memoryUsage = new MemoryUsage(totalInit, totalUsed, totalCommitted, totalMax); 31 } 32 main(String args[])33 public static void main(String args[]) { 34 runGraph(args); 35 } 36 } 37