3 import java.lang.management.ManagementFactory;
4 import java.lang.management.OperatingSystemMXBean;
6 public class MemoryPercent
9 protected static long getPhysicalMemory()
11 final OperatingSystemMXBean o = ManagementFactory
12 .getOperatingSystemMXBean();
16 if (o instanceof com.sun.management.OperatingSystemMXBean)
18 final com.sun.management.OperatingSystemMXBean osb = (com.sun.management.OperatingSystemMXBean) o;
19 return osb.getTotalPhysicalMemorySize();
21 } catch (NoClassDefFoundError e)
23 // com.sun.management.OperatingSystemMXBean doesn't exist in this JVM
24 Cache.log.error("No com.sun.management.OperatingSystemMXBean");
27 // We didn't get a com.sun.management.OperatingSystemMXBean.
31 public static long memPercent(int percent)
33 return memPercent(percent);
35 public static long memPercent(float percent)
39 long physicalMem = getPhysicalMemory();
40 if (physicalMem > MemorySetting.applicationMinMemory)
42 // try and set at least applicationMinMemory and thereafter ensure
43 // leaveFreeMinMemory is left for the OS
44 memPercent = Math.max(MemorySetting.applicationMinMemory,
46 - Math.max(physicalMem * (100 - percent) / 100,
47 MemorySetting.leaveFreeMinMemory)));