文章轉自:http://blog.csdn.net/cuihaiyang/article/details/6679735
最近安裝了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)
上網查找說是要增大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。