[讨论] weblogic 10.3下JVM的NewSize与MaxNewSize设置问题报错

saai 2011-12-06
环境:
redhat5.6
64位
weblogic10.3
jdk1.6.0_05
物理内存 16G

问题描述:
将weblogic的启动参数
USER_MEM_ARGS="-Xms1024m –Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=160m -XX:NewSize=256m -XX:MaxNewSize=448m -Xss128k"
启动进程的时候出现以下报错:
Error occurred during initialization of VM
Could not reserve enough space for object heap

但参数修改为:
USER_MEM_ARGS="-Xms1024m –Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=160m -XX:NewSize=256m -XX:MaxNewSize=256m -Xss128k"
或者这样:
USER_MEM_ARGS="-Xms1024m –Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=160m  -XX:MaxNewSize=448m -Xss128k"
这样就正常了

想问问有没有碰到过这样问题的朋友,有以下几个问题:

1.解释下当NewSize与MaxNewSize设置成不一致的情况下会带来什么样的影响?

2.我的配置在weblogic9.2下完全正常,这个问题又或者是weblogic10.3的问题?
RednaxelaFX 2011-12-06
刚才这个问题转了一手已经到我这边过一次,但当时信息不足无法给出有用的解答。
现在知道JDK的版本是1.6.0_05,事情就好办多了。

在我的一台测试机上,
$ java -version
java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 10.0-b19, mixed mode)


出问题的情况:
$ java -Xms1024m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=160m -XX:NewSize=256m -XX:MaxNewSize=448m -Xss128k -XX:+PrintCommandLineFlags
-XX:MaxHeapSize=1073741824 -XX:MaxNewSize=469762048 -XX:MaxPermSize=167772160 -XX:NewSize=268435456 -XX:PermSize=67108864 -XX:+PrintCommandLineFlags -XX:ThreadStackSize=128 -XX:+UseParallelGC 
Error occurred during initialization of VM
Could not reserve enough space for object heap

事实上这里指定-XX:NewSize=10m照样报错。所以肯定不是内存不够的问题,而是VM自己出问题了。

去掉NewSize的指定:
$ java -Xms1024m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=160m -XX:MaxNewSize=448m -Xss128k -XX:+PrintCommandLineFlags
-XX:MaxHeapSize=1073741824 -XX:MaxNewSize=469762048 -XX:MaxPermSize=167772160 -XX:PermSize=67108864 -XX:+PrintCommandLineFlags -XX:ThreadStackSize=128 -XX:+UseParallelGC 


在较新的JDK 6上用前面会出问题的参数来启动:
$ ~/jdk/6u27_x64/bin/java -Xms1024m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=160m -XX:NewSize=256m -XX:MaxNewSize=448m -Xss128k -XX:+PrintCommandLineFlags
-XX:InitialHeapSize=1073741824 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=469762048 -XX:MaxPermSize=167772160 -XX:NewSize=268435456 -XX:ParallelGCThreads=4 -XX:PermSize=67108864 -XX:+PrintCommandLineFlags -XX:ThreadStackSize=128 -XX:+UseCompressedOops -XX:+UseParallelGC 


这是JVM的bug,而且在较新的JDK 6上已经没有这个问题了。
在测试机上随手试了下,6u7还不行,6u14已经没有这个问题了。
<< 好吧,顺手把6u6一直到6u13都试过了都不行,最早修复该问题的版本就是6u14了。

请试试升级JDK吧,现在我能推荐的版本是JDK6u29。

相关的几个bug的链接:
Bug 6822429: configuration anomaly in JRE 6 wrt NewSize parameter: JVM refuses to start
Bug 6979312: 1.5.0_24 heap generation size calculation problem
Bug 6524727: GC ergonomics does not honor the minimum young gen size implied by a -Xms and NewRatio
saai 2011-12-06
谢谢!学习了
coffeesweet 2011-12-07
那是不是在weblogic10.3指定的JDK修改一下版本就能行了??
楼主正常的weblogic9.2指定的JDK版本不是jdk1.6.0_05吗??
Global site tag (gtag.js) - Google Analytics