jvm 最大堆大小从java 6降低到java 7?

gv8xihay  于 2022-11-07  发布在  Java
关注(0)|答案(2)|浏览(161)

目前我们遇到了一个问题,我们的Java应用程序可以在JRE 6中顺利运行,但对于JRE 7,它有时会报告“无法创建Java虚拟机”,并且无法启动程序。我们在启动命令行中有“-Xmx 1024 m”选项。
在谷歌搜索后,人们建议检查最大堆大小,可以在PC中请求。然后我尝试了以下几个。
对于JRE 6,

C:\Users\joey>java -Xmx1214m -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode)

C:\Users\joey>java -Xmx1215m -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

对于JRE 7,

D:\Program Files\Java\jre7\bin>java.exe -Xmx930m -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode)

D:\Program Files\Java\jre7\bin>java.exe -Xmx931m -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.

当我关闭PC中的大多数进程并将内存释放到2.5 GB时,对于JRE 7,它将成功地达到1094 m,如下所示。

D:\Program Files\Java\jre7\bin>java.exe -Xmx1094m -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode)

D:\Program Files\Java\jre7\bin>java.exe -Xmx1095m -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.

JVM可以请求的最大堆大小似乎与系统可用内存大小有关,有人知道确切的关系吗?
在创建JVM时,是否有某种方法可以启用JRE的跟踪日志?
谢谢你,谢谢你
祝你好运,乔伊

8oomwypt

8oomwypt1#

当从jre6_20切换到jre7_51(均为32位虚拟机)时,我在各种Windows操作系统(Win7、Win 2008 R2)上遇到了相同的问题,同时有足够的可用RAM(3-5G)
在java 6上使用vm参数-Xmx 1300 m和-XX:MaxPermSize= 256 m,虚拟机就可以启动了。但是,在java7上,我必须降低启动最大内存(xmx为100 m,permgen为100 m),以便能够启动虚拟机。
有趣的是:如果我重新启动我的机器,jvm 7将以原始vm参数(-Xmx 1300 m和-XX:MaxPermSize= 256 m)启动,因此我怀疑根本原因可能是操作系统与JVM的组合。
我知道在Windows OSes -32 bit VMs上期望有一个单独的大块内存,但不能使用的最大进程内存大小将在1.4G到1.6G之间(因为额外的约束)
有任何故障排除提示吗?Oracle在java7发行说明中没有提供任何信息(或者我找不到这些信息)

xriantvc

xriantvc2#

我遇到了类似的问题Windows 7 64位,没有JAVA_HOME设置,也没有在PATH中。这会失败“C:\Program Files(x86)\Java\jdk1.7.0_51\bin\java.exe”-Xms 32 m-Xmx 1024 m-XX:最大许可大小= 256 m-版本

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.

这将运行“C:\程序文件(x86)\Java\jdk1.7.0_51\bin\java.exe”-Xms 32 m-Xmx 512 m-XX:最大许可大小= 256 m-版本
这也可以工作(我可以重新编译或不重新编译,没有区别“C:\Program Files(x86)\Java\jdk1.6.0_45\bin\java.exe”-Xms 32 m-Xmx 1024 m-XX:MaxPermSize= 256 m-版本
我试着关闭windows DEP,没有什么区别http://windows.microsoft.com/en-us/windows-vista/data-execution-prevention-frequently-asked-questions
我摆弄了一下虚拟内存设置,从允许Windows管理http://windows.microsoft.com/en-us/windows/change-virtual-memory-size#1TC=windows-7
我在Windows中增加了虚拟内存,它允许它工作,有时...(与xmx 1024)
没有其他东西消耗大量资源(内存等,我确实有oracle数据库在本地运行,但关闭了它)
“C:\Program Files(x86)\Java\jdk1.7.0_51\bin\java.exe”-Xms 32 m-Xmx 1024 m-XX:MaxPermSize= 256 m-version初始化VM期间发生错误无法为对象堆保留足够的空间错误:无法创建Java虚拟机。错误:发生严重的例外状况。程式将结束。
这将运行“C:\程序文件(x86)\Java\jdk1.7.0_51\bin\java.exe”-Xms 32 m-Xmx 900 m-XX:最大许可大小= 256 m-版本
这将失败U:〉“C:\Program Files(x86)\Java\jdk1.7.0_51\bin\java.exe”-Xms 32 m-Xmx 2024 m-XX:MaxPermSize= 256 m-version在VM初始化期间发生错误无法为对象堆保留足够的空间错误:无法创建Java虚拟机。错误:发生严重的例外状况。程式将结束。
新版本,即使在允许Windows管理虚拟内存和DEP打开“C:\Program Files(x86)\Java\jdk1.7.0_65\bin\java.exe”的情况下也能正常工作-Xms 32 m-Xmx 1024 m-XX:MaxPermSize= 256 m-版本

相关问题