Yep, you're right. Derp.
No worries. A big part of the issue is the memory that'll end up being reserved for internal graphics, and the like.
Thankfully, 32-bit is nearly dead and buried!
Right but Java cannot use all available process memory because of the way the heap is organized. It also needs some machinery for the runtime and GC and the JIT loaded at all times. And I seem to recall... isn't Pre-7 Windows the one that only gives userspace access to like 2/3 the actual memory to speed up syscalls by keeping all that stuff resident in process? Or am I getting that confused with older linux?
I believe that is an older linux kernel issue, but I am not sure. I do know it isn't a Windows issue I've heard of as such.
And yes, Java can, at most, access 2GB of memory per process in 32-bit windows if I remember from my testing correctly.
I've found that it chokes after 1024MB though, so that is usually the best place to call the hard limit on 32-bit.
On the other hand, 64-bit Java handles 8Gb swimmingly.