服务器:windows Server2003 CPU E3400 @2.60GHZ 4.96GB内存
应用服务器:weblogic 9.2在文件setDomainEnv.cmd设置
set MEM_ARGS=-Xms1024m -Xmx1700m
启动出现:
Error occurred during initialization of VM
Could not reserve enough space for object h
Could not create the Java virtual machine.-Xmx为1500 没问题
--------------------------------------------
奇怪4.9G 内存 竟然不能设置-Xmx2000m

解决方案 »

  1.   

    JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制
      

  2.   

    32位下jvm理论上是可以支持到2048m的,不过这个要依赖于系统。所以,我们安全的做法是:先用一个command line来测试一下你的系统理论上可以支持到多大的JVM。打开run->cmd运行:java -version -Xms1700m -Xmx1700m如果能正确得到java 版本的信息输出,那么你就可以使用这个Xmx,但是这只适合于TOMCAT。Weblogic还有一些自己的内存管理机制,并不是说你给了1800m就可以支持,它还会开启一些自己的进程在jvm里。因此,你的weblogic无法支持1700只能到1500,1600很正常。32位机下,要使用更多的内存来扩展你的JVM性能,应该用weblogic垂直集群,及多个domain协作。比如说你有16GB内存,可以开3个DOMAIN,每个1500,协作起来就可以达到3*1500m的工作量。因此,一般JAVA/J2EE应用在客户条件的允许下,要首推64位。这样你的JVM是无任何限制的。
    当然,WEBLOGIC也需要用相应的64位
      

  3.   

    1700不行,1500可以,那是因为JVM只开了1500,你不能开的比JVM大,意思是你的系统只开辟了1G内存空间,你非要给你的软件开2个G的,当然不行了,与你机器内存大小没关系的。
      

  4.   

    不同的操作系统,有不同的JVM大小限制的。