У меня есть фрагмент кода, который рассчитывает общий объем оперативной памяти в моей системе [не размер кучи Java VM].
Это выглядит следующим образом:
OperatingSystemMXBean operatingSystemMXBean =
ManagementFactory.getOperatingSystemMXBean();
Method m = operatingSystemMXBean.getClass().
getDeclaredMethod("getTotalPhysicalMemorySize");
m.setAccessible(true);
Object value = m.invoke(operatingSystemMXBean);
if (value != null)
{
System.out.println(value);
}
Проблема с приведенным выше фрагментом кода заключается в том, что он иногда дает неверные значения. Например, в системе с 8 ГБ ОЗУ, использующей 32-разрядную JVM, отображается 4 ГБ. Я предполагаю, что это потому, что JVM является 32-битной, и использование 32-битных 4 ГБ - это максимум, на который она может адресовать.
Может кто-нибудь предложить пути / обходные пути для этого. В основном, как мы можем получить общий объем оперативной памяти в системе, использующей 32-битную JVM.
Полная информация о моей системе:
ОС: Windows 7
Процессор: Intel i7
JDK: Sun Java 1.6, обновление 21, 32 бита
Оперативная память: 8 ГБ