in src/jetbrains/buildserver/agentInfo/AgentSystemInfo.java [88:113]
Long getPhysicalMemorySizeMB() {
try {
final OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
if (operatingSystemMXBean instanceof com.sun.management.OperatingSystemMXBean) {
com.sun.management.OperatingSystemMXBean sunBean = ((com.sun.management.OperatingSystemMXBean)operatingSystemMXBean);
long myPhysicalMemoryInMb = sunBean.getTotalPhysicalMemorySize() / MB;
if (myPhysicalMemoryInMb > 0) {
return myPhysicalMemoryInMb;
}
}
} catch (Throwable e) {
LOG.info("Class 'com.sun.management.OperatingSystemMXBean' not found or another error, using alternative way to get total memory. Error encountered: " + e.toString());
try {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
Object attribute = mBeanServer.getAttribute(new ObjectName("java.lang","type","OperatingSystem"), "TotalPhysicalMemorySize");
long myPhysicalMemoryInMb = (Long)attribute / MB;
if (myPhysicalMemoryInMb > 0) {
return myPhysicalMemoryInMb;
}
} catch (Throwable e1) {
LOG.warn("Failed to get total memory size: " + e1.toString());
}
}
return null;
}