



Here's some info I found online for somebody asking that before, supposedly from a "VM god":ġ.5GB on Windohs, up to about 3.8GB on Solaris. Despite what others have suggested, while it will chew up more RAM, you will have much more contiguous virtual address space, and allocating 2GB contiguously would be trivial. Not fun, but if you are desperate.Īlternatively, you can just switch to 64-bit Windows and a 64-bit JVM. You could try going through your DLL bindings in your JVM process and look at trying to rebase your DLL's in to a more compact address space. Device drivers and other kernel bits have their own address space (the other 2GB of the 4GB 32-bit space). Likely causes of the variances are different security patches, C runtime versions, etc. Things that are likely to cut in to your address space aside from the usual stuff include security software, CBT software, spyware and other forms of malware. Unfortunately optimizations in Windows that minimize the relocation of DLL's during linking make it more likely you'll have a fragmented address space. What will get in your way are DLL's that get loaded in to your address space. So, other programs running on the system shouldn't necessarily impact your heap size. Keep in mind that Windows has virtual memory management and the JVM only needs memory that is contiguous in its address space.
