System.getProperty("os.arch");
Должен быть доступен на всех платформах, для получения дополнительной информации см. Учебное пособие по системным свойствам Java .
Но 64-битные платформы Windows будут принадлежатьJVM, если это 32-битная JVM.На самом деле 64-битная Windows будет лгать любому 32-битному процессу в среде, чтобы помочь старым 32-битным программам нормально работать в 64-битной ОС.Прочитайте статью MSDN о WOW64 для получения дополнительной информации.
В результате WOW64 32-битная JVM, вызывающая System.getProperty("os.arch")
, вернет "x86".Если вы хотите получить настоящую архитектуру базовой ОС в Windows, используйте следующую логику:
String arch = System.getenv("PROCESSOR_ARCHITECTURE");
String wow64Arch = System.getenv("PROCESSOR_ARCHITEW6432");
String realArch = arch != null && arch.endsWith("64")
|| wow64Arch != null && wow64Arch.endsWith("64")
? "64" : "32";
См. Также:
HOWTO: ОбнаружениеBitness процесса
Почему% processor_architecture% всегда возвращает x86 вместо AMD64
Определить, является ли текущая версия Windows 32-битной или 64-битной