Получение размера памяти ОС из Java - PullRequest
10 голосов
/ 02 декабря 2010

Есть ли способ получить общий объем памяти в операционной системе из Java? Использование

Runtime.getRuntime().maxMemory()

возвращает разрешенную память для JVM, а не операционной системы. У кого-нибудь есть способ получить это (из кода Java)?

Ответы [ 3 ]

14 голосов
/ 02 декабря 2010
com.sun.management.OperatingSystemMXBean bean =
  (com.sun.management.OperatingSystemMXBean)
    java.lang.management.ManagementFactory.getOperatingSystemMXBean();
long max = bean.getTotalPhysicalMemorySize();

возвращает доступный размер ОЗУ для JVM (ограниченный 32-битным), а не размер кучи.

3 голосов
/ 02 декабря 2010

, что невозможно с чистой Java, ваша программа работает на виртуальной машине Java, и поэтому она изолирована от ОС.Я предлагаю 2 решения для этого:

1) Вы можете использовать JNI и вызвать функцию C ++ для этого
2) Другой вариант - использовать Runtime.exec().Тогда вы должны получить информацию от "cat /proc/meminfo"

3 голосов
/ 02 декабря 2010

Нет единственного Java-способа получить эту информацию. Вы можете использовать Runtime.exec() для запуска специфичных для ОС команд, например, /usr/bin/free в Linux. В системах Linux вы можете использовать классы доступа к файлам Java (FileInputStream) для анализа /proc/meminfo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...