Как да възстановите RAM на 64-битов Windows 7

Имам Java Desktop App, инсталиран на 64-битов Windows Vista с 24 GB RAM. Програмата ми намира само 4 от 24GB. Използвам RAM

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 GB. Как да стартирам 64-битов WMI?


person Dorothy    schedule 09.12.2011    source източник


Отговори (3)


Ако знаете, че сте в 32-битов JRE на 64-битова система, можете да стартирате 64-битовия WMIC, както следва:

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

Имайте предвид, че тази команда няма да работи от 64-битова JRE или на 32-битова система, така че първо трябва да разберете в коя среда се намирате.

person Harry Johnston    schedule 11.12.2011
comment
Това вече го разбрах. Използвам подобна система: Runtime.getRuntime().exec("C:\\Windows\\" + (64bit == true ? "sysnative" : "system32") + "\\wbem\\wmic.exe computersystem get ...") Просто никога не успях да отговоря на въпроса си. Благодаря! - person Dorothy; 04.01.2012

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

person ziesemer    schedule 09.12.2011
comment

Искам да създам тригер преди изтриване. Когато изтрия запис от таблица, този запис трябва да бъде вмъкнат в таблица с хронология. Как мога да направя това в SQL Server?

- person Dorothy; 09.12.2011
comment
Ти потвърди подозрението ми. Използва се само 32-битов JRE, който никога няма да може да види повече от 4 GB RAM. 64-битов JRE ще изглежда по следния начин: java version "1.7.0_01" Java(TM) SE Runtime Environment (build 1.7.0_01-b08) Java HotSpot(TM) 64-Bit Server VM (build 21.1-b02, mixed mode) - person ziesemer; 09.12.2011

Част от слоя Windows WOW64 е да емулира 32-битова среда възможно по-съвършено . Иначе е скапан емулатор.

WMI за 32-битово приложение ще върне само това, което 32-битово приложение би могло да очаква преди това. Например, ако приемем, че програма се е опитала да съхрани броя байтове системна памет, използвайки 32-битово цяло число. Е, ако WMI каза истината и върне 24 GB, тогава програмата ще се срине, опитвайки се да напълни това число в 32-битово цяло число (или ще даде неправилен резултат, ако операцията не е проверена).

Препоръчителното решение е да използвате 64-битов JRE и вашата програма да работи в 64-битов режим.

person vcsjones    schedule 09.12.2011