- Java Virtual Machine Tutorial
- JVM - Home
- JVM - Introduction
- JVM - Architecture
- JVM - Class Loader
- JVM - Runtime Data Areas
- JVM - The JIT Compiler
- JVM - Compilation Levels
- JVM - 32b vs. 64b
- JVM - JIT Optimisations
- JVM - Garbage Collection
- JVM - Generational GCs
- JVM - Tuning the GC
- JVM - Memory Leak in Java
- Java Virtual Machine Resources
- JVM - Quick Guide
- JVM - Useful Resources
- JVM - Discussion
Java Virtual Machine - 32b vs. 64b
On a 32b machine, only the 32b version of the JVM can be installed. On a 64b machine, the user has a choice between the 32b and the 64b version. But there are certain nuances to this that can affect how our Java applications perform.
If the Java application uses less than 4G of memory, we should use the 32b JVM even on 64b machines. This is because memory references in this case would only be 32b and manipulating them would be less expensive than manipulating 64b addresses. In this case, the 64b JVM would perform worse even if we are using OOPS (ordinary object pointers). Using OOPS, the JVM can use 32b addresses in the 64b JVM. However, manipulating them would be slower than the real 32b references since the underlying native references would still be 64b.
If our application is going to consume more than 4G memory, we will have to use the 64b version as the 32b references can address no more than 4G of memory. We can have both the versions installed on the same machine and can switch between them using the PATH variable.