Have you tried running your application with the JRockit JVM?
http://www.oracle.com/technology/software/products/jrockit/index.html It doesn't require a contiguous memory space.
"How to get (almost) 3 GB heap on Windows!
As you may be aware, the maximum heap size on Window using JRockit - or for that matter any JVM we are aware of - has been limited to slightly below 2 GB. There have been two reasons for this. One is that the maximum process size on Windows has been limited to 2 GB, though this can be worked around by using the /3GB kernel switch. The second is that JVMs have required a contiguous memory space for the Java heap for efficiency reasons, which causes the maximum Java heap size to be limited by DLLs loaded into the process address space.
With JRockit 5.0 R26 this barrier is broken! By introducing support for split heaps, we have been able to significantly increase the Java heap size on Windows.
Windows 2003/XP using the /3GB switch (32-bit OS)
1.85 GB - JRockit 5.0 R25.2 (SP2)
2.85 GB - JRockit 5.0 R26 (SP3)"
http://web.archive.org/web/20080119012415/http://dev2dev.bea.com/blog/hstahl/archive/2005/12/how_to_get_almo.html