我们有一个需要大量堆空间的java程序 - 我们从(在其他命令行参数中)启动参数-Xmx1500m,它指定最大堆空间为1500 MB.在刚刚重新启动的Windows XP机器上启动此程序时,它将启动并运行没有问题.但是如果程序运行了几次,计算机已经运行了一段时间,等等,当它试图启动时我得到这个错误:
Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
我怀疑Windows本身正在遭受内存碎片化,但我不知道如何证实这种怀疑.在发生这种情况时,任务管理器和sysinternals procexp报告2000MB可用内存.我看过这个与内部碎片有关的问题
所以第一个问题是,我如何确认我的怀疑?第二个问题是,如果我的怀疑是正确的,有没有人知道解决这个问题的任何工具?我看了很多,但除了定期重新启动机器外,我还没有发现任何有用的东西.
ps - 改变操作系统目前也不是一个可行的选择.