在我的具有 4GB RAM 的 Windows 7 Professional 32 位 PC 上安装最新的 Java 7 开发工具包 (Java SE 7u11) 后,我注意到无法为 Tomcat 分配太多内存。
这些内存设置适用于 Java 开发工具包 6u38:
set JAVA_OPTS=-server -Xms978m -Xmx978m -XX:MaxPermSize=512m
...当使用 jdk7 运行时,这些设置会导致 Tomcat 启动器退出并显示以下错误消息:
VM 初始化过程中发生错误
无法为对象堆保留足够的空间
错误:无法创建 Java 虚拟机。
错误:发生致命异常。程序将退出。
我尝试降低 Xms 和 Xmx 设置,但显然超过 512m 就无法工作了:
set JAVA_OPTS=-server -Xms512m -Xmx512m -XX:MaxPermSize=512m
然而,systeminfo |find "Available Physical Memory"
它告诉我有 1200mb 可用内存。
Java 7 的内存管理有什么变化吗?这是否意味着 Java 7 只能在较少的内存下工作?
谢谢你的建议,
罗恩
答案1
两条信息可以帮助您正确计算内存:
- 32 位操作系统无法使用超过 3GB 的 RAM,即使安装了更多内存
- 虽然内存是为 Java 分配的,但只要 Java 没有主动使用它,它在系统信息中就是“空闲的”。
如果您还有任何其他 java 进程正在运行(例如 eclipse?),您也不会看到这些进程的分配内存。