weblogic10.3 java.lang.OutOfMemoryError: PermGen space

 最近安装了WebLogic10.3.4,测试在weblogic上部署项目,没过多久就报错了:

weblogic.servlet.jsp.CompilationException: Failed to compile JSP /error.jsp Exception occurred while processing 'D:\JavaProject\struts2\webapp\error.jsp'java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at weblogic.jsp.internal.jsp.JspJavaLanguageX.getTransform(JspJavaLanguageX.java:10) at weblogic.jsp.internal.jsp.JspScriptTransform.(JspScriptTransform.java:132) at weblogic.jsp.internal.jsp.JspCheckContext.check(JspCheckContext.java:82) at weblogic.jsp.internal.jsp.JspAnalyzer.check(JspAnalyzer.java:57) at weblogic.jsp.internal.ProxySourceFile._check(ProxySourceFile.java:136) at weblogic.jsp.internal.SourceFile.masterCheck(SourceFile.java:762) at weblogic.jsp.internal.SourceFile.check(SourceFile.java:314) at weblogic.jsp.internal.SourceFile.check(SourceFile.java:335) at weblogic.jsp.internal.ProxySourceFile.codeGen(ProxySourceFile.java:224) at weblogic.jsp.internal.SourceFile.codeGen(SourceFile.java:327) at weblogic.jsp.internal.client.ClientUtilsImpl$CodeGenJob.run(ClientUtilsImpl.java:599) at weblogic.jsp.internal.client.Job.performJob(Job.java:83) at weblogic.jsp.internal.client.ThreadPool$WorkerThread.run(ThreadPool.java:217)

上网查找说是要增大PermGen space的大小,但大部分都是修改tomcat的文章,最后找到http://darkjune.iteye.com/blog/178854才知道要在哪里修改。

方法:修改weblogic安装目录下wlserver\common\bin\commEnv.cmd,找到set MEM_ARGS=-Xms32m -Xmx200m -XX:MaxPermSize=128m,修改成set MEM_ARGS=-Xms256m -Xmx512m -XX:MaxPermSize=256m,可根据机器配置调整。其中有针对oracle自己jvm和sun jvm的配置,我使用的是sum的jvm所以只修改了“:sun”下面的MEM_ARGS。解释一下参数含义:

  -Xms:内存初始值 
  -Xmx:内存最大值(不要超过内存的80%)
  -XX:MaxPermSize:PermGen(用于存放Class和Meta的信息)区域内存最大值。

运行一段时间发现还是报错,查看了启动命令,发现 %MW_HOME%\user_projects\domains\mydomain\bin\setDomainEnv.cmd 在调用完 wlserver\common\bin\commEnv.cmd 后有这么一句:set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m,将其修改成256m。

你可能感兴趣的:(exception,weblogic,内存)