How can I tell if the JVM in which my application runs is 32 bit or 64-bit? Specifically, what functions or properties I can used to detect this within the program?
In the menu, click Settings > Active Profile. Click the Java icon and then the Advanced tab. Select 32-bit Java (default) or 64-bit Java.
For certain versions of Java, you can check the bitness of the JVM from the command line with the flags -d32
and -d64
.
$ java -help
...
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
To check for a 64-bit JVM, run:
$ java -d64 -version
If it's not a 64-bit JVM, you'll get this:
Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.
Similarly, to check for a 32-bit JVM, run:
$ java -d32 -version
If it's not a 32-bit JVM, you'll get this:
Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.
These flags were added in Java 7, deprecated in Java 9, removed in Java 10, and no longer available on modern versions of Java.
You retrieve the system property that marks the bitness of this JVM with:
System.getProperty("sun.arch.data.model");
Possible results are:
"32"
– 32-bit JVM"64"
– 64-bit JVM"unknown"
– Unknown JVMAs described in the HotSpot FAQ:
When writing Java code, how do I distinguish between 32 and 64-bit operation?
There's no public API that allows you to distinguish between 32 and 64-bit operation. Think of 64-bit as just another platform in the write once, run anywhere tradition. However, if you'd like to write code which is platform specific (shame on you), the system property sun.arch.data.model has the value "32", "64", or "unknown".
An example where this could be necessary is if your Java code depends on native libraries, and you need to determine whether to load the 32- or 64-bit version of the libraries on startup.
Just type java -version
in your console.
If a 64 bit version is running, you'll get a message like:
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed mode)
A 32 bit version will show something similar to:
java version "1.6.0_41"
Java(TM) SE Runtime Environment (build 1.6.0_41-b02)
Java HotSpot(TM) Client VM (build 20.14-b01, mixed mode, sharing)
Note Client
instead of 64-Bit Server
in the third line. The Client/Server
part is irrelevant, it's the absence of the 64-Bit
that matters.
If multiple Java versions are installed on your system, navigate to the /bin folder of the Java version you want to check, and type java -version
there.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With