The majority of this FAQ deals with 32-bit (x86) JVMs. For 64-bit (x64) JVMs please see the very bottom of this FAQ.
See the following java forum thread:
One of the posts on that thread (in Dec. 2003) stated:
From what I've read and from personal experience, the limits are about:
- Solaris 2.6 and x86 - 2GB
- Solaris 7 and Solaris 8 SPARC - 4GB
- Mac OS X - 2GB
- Win (2000/XP) - 1648 MB
- AS/400 / iSeries (V5R1M0) - Using os400.gc.heap.size.max (overwrites Xmx) 139,264,000 KB. If not set the setting defaults to *NOMAX which is around 240 GB
We've also found other supporting details online which are summarized as follows:
On 32-bit processor machines, the largest contiguous memory address space the operating system can allocate to a process is 1.8GB. Because of this, the maximum heap size can only be set up to 1.8GB.
On 64-bit processor machines, the 1.8 GB limit does not apply, as 64-bit processor machines have a larger memory address space.
This web page is enlightening as well.
Readers of this FAQ may also find FAQ #380 to be helpful.