如何启动具有大型最大堆的Java程序?
我使用用Java编写的内存耗尽程序(CrashPlan),有时在高峰使用时需要大约1.5 GB的内存(这由参数-Xmx1500M控制)。
通常(并且至少在启动时)它需要非常少的内存,但是在低于-Xmx1500M的任何内存时它会在峰值使用时崩溃。启动后(使用-Xmx1000M),任务管理器在工作集,专用集和分配的内存中显示其内存使用量约为100 MB。
但是,Java VM无法以-Xmx1500M启动,我猜是因为它无法分配此内存。(使用-Xmx1000M它会启动,但稍后会崩溃。)
我使用Windows 7专业版32位(不是64位),安装了32 GB内存(3 GB可访问,并且页面文件位于无法访问内存的大RAM磁盘上)。
我希望Windows能够交换其他进程以便为Java分配内存,并且由于Java无论如何都不使用它,因此会将Java未使用的内存交换为页面文件。说,现在我看到mydefrag进程使用1700 MB分配集没有问题。
(直到上周,它似乎都是这样工作的。然后发生了一些变化。)
如何强制Java以-Xmx1500M开头?