我工作的应用程序需要尽可能多的内存。通过试验和错误我发现在Windows下,我可以可靠地分配给32位JVM的大约1200 MB。它略有不同但我从未知道它低于此值。在运行OpenJVM的Linux下,我有时可以分配1300MB。这个限制有很多原因,但是从我读到的内容中,阻止JVM获取更大堆的主要问题之一是要求堆是一个连续的内存块。
由于您使用的是64位机器,运行64位操作系统,我强烈建议您只需切换到64位JVM。然后,您可以分配基本上无限量的内存。然而,我的实验表明,超过大约10GB的内存是一个收益递减的严重情况,因为JVM似乎没有很好地使用它并且性能受损。我相信Java 8将更好地管理大量内存。