【发布时间】:2010-09-11 08:14:40
【问题描述】:
我们有一个需要大量堆空间的 java 程序 - 我们从(以及其他命令行参数)参数 -Xmx1500m 开始它,它指定最大堆空间为 1500 MB。在刚刚重新启动的 Windows XP 机器上启动此程序时,它将启动并运行而不会出现问题。但是如果程序运行了几次,计算机已经启动了一段时间等等,当它尝试启动时我得到这个错误:
虚拟机初始化过程中发生错误 无法为对象堆保留足够的空间 无法创建Java虚拟机。我怀疑 Windows 本身存在内存碎片,但我不知道如何证实这种怀疑。发生这种情况时,任务管理器和 sysinternals procexp 报告 2000MB 可用内存。我看过this question related to internal fragmentation
所以第一个问题是,我如何确认我的怀疑? 第二个问题是,如果我的怀疑是正确的,有没有人知道解决这个问题的任何工具?我环顾四周,但除了定期重新启动机器之外,我没有发现任何有用的东西。
ps - 更改操作系统目前也不是一个可行的选择。
【问题讨论】:
标签: java windows memory memory-management windows-xp