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