java.lang.OutOfMemoryError PermGen space及其解决方法

来源:互联网 发布:mac 系统变慢 编辑:程序博客网 时间:2024/05/16 18:42

Tomcat也是类似的解决方法
-----------------------------------------------------------------------------------------------------------------------------------------------
错误现象,eclipse插件配置weblogic9.2,启动后进入 console控制台发布程序时,后台报错,出现类型如下错误

   <2008-8-28 下午04时02分47秒 CST> <Error> <netuix> <BEA-423143> <A javax.servlet.ServletException occurred while rendering JSP /framework/skeletons/default/gridlayout.jsp, for control com.bea.netuix.servlets.controls.layout.GridLayout indicating the exception most likely originated in the JSP page. The error was: javax.servlet.ServletException: PermGen space The underlying cause was: java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: PermGen space 

    注意上表中红色标记部分,内存溢出。

    我的笔记本有2、3G怎么还会内存溢出呢?不是说你笔记本的内存不够用,是指超过了jvm默认的大小(4M)那么就会产生此错误信息了。

   解释一下(网上看的):PermGen space的全称是Permanent Generation space,是指内存的永久保存区域, 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。

   解决的办法:

    Eclipse –preferences-weblogic的javaVM option点add按钮,增加一行:

    -XX:MaxPermSize=128m(这个是按照内存1G配置,如果你的内存足够大,你可以设置大于128)
     有人说需要修改.sh文件,其实我觉得不必要,直接在eclipse的weblogic插件下修改,显得更为方便。

     重新启动weblogic,是否发现之前的错误飞了。
原创粉丝点击