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 }