java - 无法使用 -Xmx > 966m 运行 java

标签 java windows heap-memory

如果我将 Xmx 设置为 967 或更高的值,我将无法运行 java。

C:\Documents and Settings\salesforce>java -Xmx967m -version Error occurred during initialization of VM Could not reserve enough space for object heap Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.

如果我运行相同的命令,但将 Xmx 设置为 966,它会正确运行:

C:\Documents and Settings\salesforce>java -Xmx966m -version java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b17) Java HotSpot(TM) Client VM (build 23.25-b01, mixed mode)

在执行命令之前,有 3GB 的内存可用(任务管理器)。

环境:

  • Java 1.7.0_25 32 位
  • Windows 服务器 2003 SP2,4GB 内存

最佳答案

JVM 在内部使用的不仅仅是堆大小。根据您的配置方式(永久空间、线程堆栈大小、线程数等),这可能很容易占到几百 MB。我相信您使用的是 32 位 jvm,因此在 32 位 Windows 上最大进程大小为 2GB。我相信有办法将其扩展到 3GB(例如 http://dwf.blogs.com/beyond_the_paper/2009/04/enabling-3gb-switch-on-windows-vista.html 对此有一些解释);但我已经有一段时间没有处于那种环境中了。所以你可能已经接近极限了。

关于java - 无法使用 -Xmx > 966m 运行 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31533378/

相关文章:

Android ==> Eclipse Heap 工具问题?

Java 数组 - 复制和编辑它们

java - install4j:如何检查我的apache tomcat服务器是否启动成功

java - 用于验证带扩展名的 Windows 和 Linux 路径的正则表达式

c++ - winpcap 中的 URL 浏览器来源

c - 内存分配的递归

java - 无法将 Weblogic 结构类型转换为 Oracle 结构类型

java - ActionListener 在单独的面板上绘制形状

android - Cordova 构建在 superspawn.js 失败

Java 堆分析因 SIGABRT 崩溃