Как восстановить оперативную память на 64-битной Windows 7 - PullRequest
1 голос
/ 09 декабря 2011

У меня установлено приложение для рабочего стола Java на 64-битной Windows Vista с 24 ГБ оперативной памяти.Моя программа находит только 4 из 24GB.Я получаю ОЗУ, используя

wmic computersystem get TotalPhysicalMemory /format:list

И если это не удается (если у них нет WMI), я использую

com.sun.management.OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean();
long ram = (long) bean.getTotalPhysicalMemorySize();

Поскольку у меня нет доступа к ПКЯ не смог запустить тесты, чтобы подтвердить, какой метод используется, но я почти уверен, что на машине есть WMI.

Я подозреваю, что я использую 32-битный WMI, который, вероятно, имеет ограничение 4 ГБ.Как мне запустить 64-битный WMI?

Ответы [ 3 ]

2 голосов
/ 09 декабря 2011

Часть слоя Windows WOW64 призвана максимально эмулировать 32-битную среду . В противном случае это паршивый эмулятор.

WMI для 32-разрядного приложения будет возвращать только то, что 32-разрядное приложение ранее могло ожидать. Например, предполагая, что программа пыталась сохранить количество байтов системной памяти, используя 32-разрядное целое число. Что ж, если WMI сказал правду и вернул 24 ГБ, то программа вылетала бы, пытаясь заполнить это число 32-разрядным целым числом (или выдать неверный результат, если операция не проверена).

Рекомендованным решением является использование 64-битной JRE и запуск вашей программы в 64-битной версии.

2 голосов
/ 09 декабря 2011

Я предполагаю, что вы используете 32-битную JRE вместо 64-битной.Можем ли мы увидеть вывод java -version?

1 голос
/ 12 декабря 2011

Если вы знаете, что находитесь в 32-битной JRE в 64-битной системе, вы можете запустить 64-битный WMIC следующим образом:

%SystemRoot%\sysnative\cmd.exe /c wmic computersystem get TotalPhysicalMemory /format:list

Обратите внимание, что эта команда не будет работать с 64-разрядной JRE или с 32-разрядной системой, поэтому вам необходимо выяснить, в какой среде вы находитесь в первую очередь.

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