I know how to check whether the JVM is 32 or 64-bit is running on a current Machine using java program. But is there any possibility to know if the OS on current machine is 32-bit or 64-bit.
Please let me know how to determine using Java Program.
I know how to check whether the JVM is 32 or 64-bit is running on a current Machine using java program. But is there any possibility to know if the OS on current machine is 32-bit or 64-bit.
Please let me know how to determine using Java Program.
System.getProperty("os.arch");
Should be available on all platforms, see the Java System Properties Tutorial for more information.
But 64 bit Windows platforms will lie to the JVM if it is a 32 bit JVM. Actually 64 bit Windows will lie to any 32 bit process about the environment to help old 32 bit programs work properly on a 64 bit OS. Read the MSDN article about WOW64 for more information.
As a result of WOW64, a 32 bit JVM calling System.getProperty("os.arch") will return "x86". If you want to get the real architecture of the underlying OS on Windows, use the following logic:
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";
This question was answered by ChrisH.
You can run
System.getProperty("os.arch")
to retrieve the systems architecture. My Windows 64bit system will return amd64
as os.arch
value.