weblogic java.lang.outofmemory 调大jvm内存

每个weblogic server 都是运行在一个java虚拟机上 ,对weblogic的内存设置也就是对java虚拟机的内存设置。

MEM_ARGS=-Xms512m -Xmx1024m -XX:MaxPermSize=128m

-Xms512m表示jvm内存下限为512m 

-Xmx512m表示jvm内存上限为1024m 

-XX:MaxPermSize=128m表示永久内存为128m 

 

我们主要设置的为jvm内存,永久内存设置为128m或者256m即可。

设置jvm内存时,根据经验32位机器最大可启动1.8G内存的jvm,64位机器最大可启动3G内存的jvm;

而在设置上下限的时候最好将两者设为一致,以避免浪费频繁的申请和释放内存的开销。 

----------------------------------------------------------------------------------------------------------------------------------------------------------

经过实践后的经验如下,四个步骤即可:

 

1、打开setDomainEnv.sh文件,该文件的路径位于: /weblogic/user_projects/domains/你的服务器域名/bin/setDomainEnv.sh

 

2、修改内存大小

默认的内存配置为:

if [ "${JAVA_VENDOR}" = "Sun" ] ; then
  WLS_MEM_ARGS_64BIT="-Xms256m -Xmx512m"  //64位
  export WLS_MEM_ARGS_64BIT
  WLS_MEM_ARGS_32BIT="-Xms256m -Xmx512m"  //32位
  export WLS_MEM_ARGS_32BIT
else
  WLS_MEM_ARGS_64BIT="-Xms512m -Xmx512m"
  export WLS_MEM_ARGS_64BIT
  WLS_MEM_ARGS_32BIT="-Xms512m -Xmx512m"
  export WLS_MEM_ARGS_32BIT
fi

增加内存大小后:

if [ "${JAVA_VENDOR}" = "Sun" ] ; then
  WLS_MEM_ARGS_64BIT="-Xms512m -Xmx1024m"  //64位
  export WLS_MEM_ARGS_64BIT
  WLS_MEM_ARGS_32BIT="-Xms512m -Xmx1024m"  //32位
  export WLS_MEM_ARGS_32BIT
else
  WLS_MEM_ARGS_64BIT="-Xms512m -Xmx1024m"
  export WLS_MEM_ARGS_64BIT
  WLS_MEM_ARGS_32BIT="-Xms512m -Xmx1024m"
  export WLS_MEM_ARGS_32BIT
fi

 

3、保存修改后的文件,重启weblogic。

 

4、重新访问web应用,测试成功。



注:这周部署程序时weblogic内存溢出了,我好像也把永久内存给调的很大,不知道会出现什么结果,时间长了肯定会影响效率,因此还得做出优化


weblogic的优化:
    weblogic服务器主要从内存方面着手考虑,weblogic起动时首先启动一个jvm虚拟机,这个jvm虚拟机占用的内存大小也是weblogic 占用的内存大小,在没有其他应用程序的情况下,最多可以为jvm虚拟机分配80%的系统内存(2G以下越大越好);另外一个就是垃圾回收的问题,应用程序中所有的active和dead进程都存在于jvm中,如果当其占用内存大于jvm的内存时,系统这时候会暂时停掉所有java应用,启动一个垃圾回收动作,当然,这段时间越短越好。
    因此,一般设置垃圾回收所占用的内存为jvm内存大小的1/4,这样,一次垃圾回收最长会在10-20秒的时间内结束。(jvm设的越大,每次垃圾回收(garbage collection)间隔越长,但每次持续时间越长)。jvm内存大小在startweblogic.cmd/startweblogic.sh内设置。在其中会发现一段:

%JAVA_HOME%\bin\java%JAVA_VM%%MEM_ARGS%%JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
    这即为系统启用jvm的命令,其中%MEM_ARGS%就是设置内存的参数变量,在这一行前面加上一句:set MEM_ARGS=-Xms150m -Xmx256m ,Xms和Xmx指定的值就是jvm占用内存的界定,但是一般情况下两者应设为相等。设置垃圾回收gc的内存参数如下(但是经过验证仍有一些问题,,须进一步研究) 官方文档:-XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=8。


参考资料:weblogic参数说明

猜你喜欢

转载自blog.csdn.net/jzl110/article/details/80703118