Архитектура хост-системы Java - PullRequest
3 голосов
/ 12 августа 2010

В Java, как я могу определить системную архитектуру хоста во время выполнения? С моей текущей установкой, Windows 7 x64, 32-битная Java JRE, Intel Xeon с Intel 64, системные свойства, которые кажутся наиболее очевидными, отражают архитектуру Java VM.

System.getProperty("os.arch");
System.getProperty("sun.arch.data.model");

Результат:

x86

32

Ответы [ 3 ]

1 голос
/ 12 августа 2010

Вы можете получить доступ к OperatingSystemMXBean , вызвав ManagementFactory.getOperatingSystemMXBean (), и он даст вам:

Строка getName () Возвращает имя операционной системы. Этот метод эквивалентен System.getProperty ("os.name").

Строка getArch () Возвращает архитектуру операционной системы. Этот метод эквивалентен System.getProperty ("os.arch").

Строка getVersion () Возвращает версию операционной системы. Этот метод эквивалентен System.getProperty ("os.version").

int getAvailableProcessors () Возвращает количество процессоров, доступных для виртуальной машины Java. Этот метод эквивалентен методу Runtime.availableProcessors ().

double getSystemLoadAverage () Возвращает среднее значение загрузки системы за последнюю минуту. Средняя загрузка системы - это сумма усредненных за определенный период времени количества работающих объектов, поставленных в очередь на доступные процессоры, и количества работающих объектов, работающих на доступных процессорах. Способ, которым рассчитывается среднее значение нагрузки, зависит от конкретной операционной системы, но обычно является затухающим средним значением, зависящим от времени. Если средняя нагрузка недоступна, возвращается отрицательное значение.

См. Эту страницу для более подробной информации о доступных опциях. Кроме того, у большинства контейнеров есть больше доступных опций относительно контейнера.

0 голосов
/ 09 октября 2012

Системное свойство "sun.cpu.isalist" может дать вам некоторую информацию об архитектуре процессора. Тем не менее, в ОС Windows он просто возвращает полезное значение в 64-битном JRE, которое возвращает «amd64». К сожалению, в 32-битном JRE это свойство возвращает: «pentium_pro + mmx pentium_pro pentium + mmx pentium i486 i386 i86»

Я тестирую его в Windows 7 x64, Intel I7 с обоими JRE 1.6 (32 и 64 бит).

0 голосов
/ 28 июля 2011

Я не нашел способа сделать это в Windows, но Windows не является одной из поддерживаемых нами платформ.Это имеет тенденцию работать на вариантах Linux / Solaris, хотя я не тестировал многие другие, кроме наших типичных платформ развертывания.

Я не могу легко воспроизвести код для этого настолько частичного псевдокода, что это ...

IMPORTANT: Fallback for ANY problem/exception, return "os.arch"
1) Check if System.getProperty("os.name") doesn't contain Windows
2) Exec "uname -p", capture the output
...