You are. 32-bit Windows can access 4GB of memory (3.75GB roughly are usable).
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?