Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

One problem with 64-bit Java is the amount of Memory it occupies. As of 2011 we feel that all application profiles we have encountered do not require 64-bit Java as they often do not take advantage of using more than than 1-2GB of memory. Also, we have observed that when a Java Application has access to a large amount of memory, the application gets bogged down when garbage collection occurs.

This has improved due to newer algorithms such as concurrency, parallelization and generational collection. However we observe there is still significant impact.

As such, in many cases it is better to scale horizontally (running multiple JVMs) as opposed to using one giant JVM.

Just to be clear, you still should use a 64-bit Operating Systems. A 64-bit Operating System will allow a 32-bit JVM to come closer to the theoretical 4GB memory limit.

JVM

Operating System

Maximum Heap Size

Reference

32-bit

32-bit Windows

1.4GB to 1.6GB

Oracle

32-bit

32-bit Solaris

2GB

Oracle

32-bit

64-bit Solaris

Approaching 4GB

Oracle

32-bit

64-bit Ubuntu

 

 

* Due to various additional constraints such as available swap, kernel address space usage, memory fragmentation, and VM overhead, in practice the limits will vary.

Research

According to, Software - Practice & Experience archive Volume 36 Issue 1, January 2006,

We conclude that the space an object takes in the heap in 64-bit mode is 39.3% larger on average than in 32-bit mode. We identify three reasons for this: (i) the larger pointer size, (ii) the increased header and (iii) the increased alignment. The minimally required heap size is 51.1% larger on average in 64-bit than in 32-bit mode. From our experimental setup using hardware performance monitors, we observe that 64-bit computing typically results in a significantly larger number of data cache misses at all levels of the memory hierarchy. In addition, we observe that when a sufficiently large heap is available, the IBM JDK 1.4.0 VM is 1.7% slower on average in 64-bit mode than in 32-bit mode.

More details explaining the mechanics can be put here or linked in another document.

  • No labels