In windows application process's memory space is limited to 2GB. That means no application can use more memory than 2GB.
Windows has boot.ini parameter called /3GB switch using which we can increase the memory space for application processes to 3GB.
However even after using /3GB switch maximum heap for Sun JDK cannot be more than 2GB (to be precise not more than 1.6GB). This is because Sun JDK requires continuous block of memory for the entire heap. Whereas in Windows with /3GB it is not possible.
I have observed that JRockit JDK doesn't have this limitation.