Finding 32-bit or 64-bit Java JDK Version in Java

I encountered an issue with Java installation not being compatible with my 32-bit machine. This blog post provides guidance on checking the JVM version and installing the latest Java version.

Determining 32-bit or 64-bit for Java Installation

A 32-bit system utilizes 4 bytes of memory, while a 64-bit system uses 8 bytes. This implies that 64-bit systems require more memory than their 32-bit counterparts.

Most of the time, if your code compiles with the 32-bit JDK version, you need to execute it on a 32-bit machine or 64-bit machine. This usually works fine, but machine-specific code can lead to issues, so caution is advised when installing JDK versions.

It’s important to note that a 32-bit JVM is not compatible with other 64-bit hosts/frameworks. I encountered issues with installing Tomcat 64-bit on Java 32-bit.

Java code to check 32 bit JVM or 64 Bit JVM

There is no public API to determine the 32-bit or 64-bit version according to Sun’s specifications. However, one way is to use the sun.arch.data.model system property in the JVM, which indicates the bit version. Below is a sample code:

One way is as sun.arch.data.model is one of the system properties in JVM which has 32 bit or 64 bit or unknown, so we have to write a simple program to read the property value.

Here is a sample code to find out bit version

public class BitVersionDemo {
 public static void main(String args[]) {
  System.out.println("version ="
    + System.getProperty("sun.arch.data.model"));
 }
}

Output

version =32

This output indicates that my machine has the JDK version installed with 32-bit.

on Linux:

If your system has Java 64-bit installed, running the command java -d32 will result in the message “Running a 32-bit JVM is not supported on this platform.”

bash-3.2$ java -d32 -version
Running a 32-bit JVM is not supported on this platform.

On the other hand, using the command java -d64 will display information for a 64-bit JVM.

bash-3.2$ java -d64 -version
java version "1.12.0_1"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)

The command “java -d32 -version” may result in an error, so the sample code above can be used to determine the version.

If you want to know the reference size, you can use Unsafe.addressSize(). Note that this is usually 4, as most 64-bit JVMs use 32-bit references for up to 32 GB of heap.

Wrap up

In conclusion, we’ve learned how to identify the installed JDK version as 64-bit or 32-bit using a Java program and command line.