32-Bit vs. 64-Bit
The main difference between 32-bit and 64-bit JVMs is the address space. For 32-bit JVMs, memory address is limited to 4 GB. However, the actual Java heap space available for a 32-bit HotSpot VM may be further limited depending on the underlying OS:
- Microsoft Windows
- ~1.5 GB
- ~2.5 - 3.0 GB for very recent Linux kernels
- ~2 GB for less recent Linux kernels
- ~3.3 GB
The actual maximums vary due to the memory address space consumed by both a given Java application and a JVM version.
On Solaris, there are three compilers for the VM:[4,5]
On Linux, if you install the 32-bit binary, it has the -client and -server flavors. If you install the 64-bit binary, it has only the -d64 flavor. So, if you provide -d64 option on a 64-bit Linux binary, it's a no-op.
For example, I have a 64-bit binary installed on my Linux box. Here is my JDK and JVM version information:
java version "1.7.0_04-ea" Java(TM) SE Runtime Environment (build 1.7.0_04-ea-b17) Java HotSpot(TM) 64-Bit Server VM (build 23.0-b18, mixed mode)
Note that the wording is "64-Bit Server VM" because there is no such thing as a 64-bit client VM on either Linux or Solaris.
- Unable to load performance pack (Solaris 10)
- Java Performance by Charlie Hunt and Binu John
- weblogic.nodemanager. common.ConfigException Native version is enabled but node manager native library could not be loaded : NativeVersionEnabled
- If you're switching from 32 bit JVM to 64 bit JVM in WebLogic Server environment, the challenge is that the WLS native libraries installed are based on the JVM used to do the installation. That means the native libraries will be 32 bit libraries that do not work with a 64 bit JVM. This will also have performance/scalability implications.
- (UNIX or Linux only) Include the -d64 flag in the installation command when using a 32/64-bit hybrid JDK (such as for the HP-PA, HPIA, and Solaris64 platforms).
- For 32/64-bit-hybrid JVMs on some platforms, you would have to include the -d64 flag to tell the JVM to run in 64-bit mode.