Could not reserve enough space for object heap解决

            最近开发中遇到resin服务的web应用响应缓慢,经过排除,发现是resin内存配置太小,http.sh文件内容如下:

  1. args="-Dfile.encoding=UTF-8 -J-server -Xms8000M -Xmx8000M -Xmn2000M -J-Xss256K -J-XX:ThreadStackSize=256 -J-XX:StackShadowPages后面省略  
args="-Dfile.encoding=UTF-8 -J-server -Xms8000M -Xmx8000M -Xmn2000M -J-Xss256K -J-XX:ThreadStackSize=256 -J-XX:StackShadowPages后面省略

           主要参数:

 

  •  -Xms:初始内存大小
  • -Xmx: 最大内存大小
  • -Xmn:年轻代大小

         其他参数见:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html介绍

         当给resin加太大时候会报错如下:

  1. Error occurred during initialization of VM  
  2. Could not reserve enough space for object heap  
Error occurred during initialization of VM
Could not reserve enough space for object heap

         分配过大所致,所以在分配resin内存时候,需要结合服务器内存大小(使用free -g)及jdk是否支持该内存大小决定。

 

         使用java -Xmx2047M -version命令,看是否符合:

  1. [web@SJSWT45-30 ~]$ java -Xmx2047M -version  
  2. java version "1.6.0_26"  
  3. Java(TM) SE Runtime Environment (build 1.6.0_26-b03)  
  4. Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)  
[web@SJSWT45-30 ~]$ java -Xmx2047M -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

         设置大点内存试试:java -Xmx10000M -version,如下:

 

  1. [root@SJSWT36-139 ~]# java -Xmx100000000M -version  
  2. Error occurred during initialization of VM  
  3. Could not reserve enough space for object heap  
  4. Could not create the Java virtual machine.  
[root@SJSWT36-139 ~]# java -Xmx100000000M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

           从上可以看出,超出了jdk范围,这个跟jdk版本有关,经过测试发现1.6.0_26版本(应该是和位数有关,32位的小点)支持范围大,当发现jdk不支持时,可以考虑换一个jdk版本解决。

 

posted @ 2017-05-02 09:43  sky20080101  阅读(2149)  评论(0)    收藏  举报