1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.neo4j.server.rrd;
21
22 import javax.management.MBeanServer;
23 import javax.management.MalformedObjectNameException;
24 import javax.management.ObjectName;
25 import javax.management.openmbean.CompositeDataSupport;
26 import java.lang.management.ManagementFactory;
27
28 public class MemoryUsedSampleable implements Sampleable
29 {
30 private ObjectName memoryName;
31 private MBeanServer mbeanServer;
32
33 public MemoryUsedSampleable() throws MalformedObjectNameException
34 {
35 memoryName = new ObjectName( "java.lang:type=Memory" );
36 mbeanServer = ManagementFactory.getPlatformMBeanServer();
37 }
38
39 public String getName()
40 {
41 return "memory_usage_percent";
42 }
43
44 public long getValue()
45 {
46 try
47 {
48 long used = (Long)( (CompositeDataSupport)mbeanServer.getAttribute( memoryName, "HeapMemoryUsage" ) ).get( "used" );
49 long max = (Long)( (CompositeDataSupport)mbeanServer.getAttribute( memoryName, "HeapMemoryUsage" ) ).get( "max" );
50 return (long) Math.ceil((used / (double)max) * 100);
51 }
52 catch ( Exception e )
53 {
54 throw new RuntimeException( e );
55 }
56 }
57 }