如果我将 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/