View Javadoc

1   package net.sf.ehcache.pool.sizeof;
2   
3   import java.lang.management.ManagementFactory;
4   
5   import javax.management.MBeanServer;
6   import javax.management.ObjectName;
7   import javax.management.openmbean.CompositeData;
8   
9   abstract class AbstractSizeOfTest {
10  
11    protected static final boolean COMPRESSED_OOPS;
12    protected static final boolean HOTSPOT_CMS;
13    static {
14      String value = getVmOptionValue("UseCompressedOops");
15      if (value == null) {
16        System.err.println("Could not detect compressed-oops status assuming: false");
17        COMPRESSED_OOPS = false;
18      } else {
19        COMPRESSED_OOPS = Boolean.valueOf(value);
20      }
21  
22      HOTSPOT_CMS = JvmInformation.MINIMUM_OBJECT_SIZE > JvmInformation.OBJECT_ALIGNMENT;
23    }
24    
25    private static String getVmOptionValue(String name) {
26      try {
27        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
28        Object vmOption = server.invoke(ObjectName.getInstance("com.sun.management:type=HotSpotDiagnostic"), "getVMOption", new Object[] {name}, new String[] {"java.lang.String"});
29        return (String) ((CompositeData) vmOption).get("value");
30      } catch (Throwable t) {
31        return null;
32      }
33    }
34  }