weblogic报java.lang.OutOfMemoryError: PermGen ..

摘要:内存溢出是软件开发过程中经常遇到的一些问题,在本地使用weblogic中间件的时候,可能会经常打包部署应用,重复多次之后,就可能出现内存溢出的情况。

摘要:内存溢出是软件开发过程中经常遇到的一些问题,在本地使用weblogic中间件的时候,可能会经常打包部署应用,重复多次之后,就可能出现内存溢出的情况。

1 发现问题

在部署的时候,遇到相同的包,一般直接使用“更新”功能,更新多次之后,发现项目部署的越来越慢,而且还会打印java.lang.OutOfMemoryError: PermGen space,OutOfMemoryError是内存溢出,PermGen space说明是永久代(即方法区)发生异常。

PermGen space

2 分析问题

Tomcat的Wiki页面中记录过这种问题:

Why does the memory usage increase when I redeploy a web application?

That is because your web application has a memory leak.

A common issue are "PermGen" memory leaks. They happen because the Classloader (and the Class objects it loaded) cannot be recycled unless some requirements are met (*). They are stored in the permanent heap generation by the JVM, and when you redeploy a new class loader is created, which loads another copy of all these classes. This can cause OufOfMemoryErrors eventually.

(*) The requirement is that all classes loaded by this classloader should be able to be gc'ed at the same time.

这也算是它山之石可以攻玉了。产生上面问题应该也是JVM虚拟机对永久代区域的内容做垃圾回收造成应用动态加载类文件过多引起的内存溢出错误。

3 解决问题

在weblogic域的bin目录中(我的是D:\Develop\Weblogic\wls12120\user_projects\domains\mydomain\bin)的setDomainEnv.cmd(linux对应修改setDomainEnv.sh),查找-XX:MaxPermSize:

set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=256m 
set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m

这个参数是设置永久代区域的最大值,默认是256M,直接改成512M(可以根据自己电脑配置适当增大),保存,然后重新启动weblogic。发现weblogic运行速度加快,并且只有当本机内存被其他应用占用很多的时候才会再次出现这种错误。

问题解决。

注:PermGen space,permanent heap generation space,即永久代或方法区。

错误如下:

com.bea.portlet.adapter.scopedcontent.ActionLookupFailedException: java.lang.OutOfMemoryError: PermGen space

at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:697)

at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.renderInternal(ScopedContentCommonSupport.java:266)

at com.bea.portlet.adapter.scopedcontent.StrutsStubImpl.render(StrutsStubImpl.java:107)

at com.bea.netuix.servlets.controls.content.NetuiContent.preRender(NetuiContent.java:292)

at com.bea.netuix.nf.ControlLifecycle$6.visit(ControlLifecycle.java:428)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:727)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walkRecursivePreRender(ControlTreeWalker.java:739)

at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:146)

at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:395)

at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361)

at com.bea.netuix.nf.Lifecycle.runOutbound(Lifecycle.java:208)

at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:162)

at com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:388)

at com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:258)

at com.bea.netuix.servlets.manager.UIServlet.doGet(UIServlet.java:211)

at com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:196)

at com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:251)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

at com.bea.console.utils.MBeanUtilsInitSingleFileServlet.service(MBeanUtilsInitSingleFileServlet.java:64)

at weblogic.servlet.AsyncInitServlet.service(AsyncInitServlet.java:130)

at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)

at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)

at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)

at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)

at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)

at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)

at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)

at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)

at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)

at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)

at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)

at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)

at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

Caused by: java.lang.OutOfMemoryError: PermGen space

at sun.misc.Unsafe.defineClass(Native Method)

at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45)

at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381)

at java.security.AccessController.doPrivileged(Native Method)

at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377)

at sun.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerator.java:95)

at sun.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:313)

at java.io.ObjectStreamClass.getSerializableConstructor(ObjectStreamClass.java:1327)

at java.io.ObjectStreamClass.access$1500(ObjectStreamClass.java:52)

at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:437)

at java.security.AccessController.doPrivileged(Native Method)

at java.io.ObjectStreamClass.(ObjectStreamClass.java:413)

at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1114)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)

at weblogic.rmi.extensions.server.CBVOutputStream.writeObject(CBVOutputStream.java:80)

at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:97)

at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:223)

at javax.management.remote.rmi.RMIConnectionImpl_1036_WLStub.getAttribute(Unknown Source)

at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.getAttribute(RMIConnector.java:878)

at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:263)

at weblogic.management.jmx.MBeanServerInvocationHandler.doInvoke(MBeanServerInvocationHandler.java:504)

at weblogic.management.jmx.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:380)

at $Proxy549.getBeginTime(Unknown Source)

at com.bea.console.utils.DeploymentUtils.getLastDeploymentTaskRuntimeMBean(DeploymentUtils.java:3859)

at com.bea.console.utils.DeploymentUtils.getApplicationStatusString(DeploymentUtils.java:2241)

at com.bea.console.actions.app.ApplicationOverviewAction.getCollection(ApplicationOverviewAction.java:99)

at com.bea.console.actions.BaseTableAction.display(BaseTableAction.java:46)

at com.bea.console.actions.BaseDisplayAction.execute(BaseDisplayAction.java:95)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)

at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97)

at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:2044)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29330852/viewspace-2117634/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29330852/viewspace-2117634/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值