java 7:用户应该了解堆内存处理的变化吗?

java 7:用户应该了解堆内存处理的变化吗?

在我的具有 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

两条信息可以帮助您正确计算内存:

  1. 32 位操作系统无法使用超过 3GB 的 RAM,即使安装了更多内存
  2. 虽然内存是为 Java 分配的,但只要 Java 没有主动使用它,它在系统信息中就是“空闲的”。

如果您还有任何其他 java 进程正在运行(例如 eclipse?),您也不会看到这些进程的分配内存。

相关内容