weblogic报OutOfMemoryError

本文转自: https://blog.csdn.net/liuxinghao/article/details/44617995

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

1 问题

在部署的时候,遇到相同的包,一般直接使用“更新”功能,更新多次之后,发现项目部署的越来越慢,而且还会打印java.lang.OutOfMemoryError: PermGen space,OutOfMemoryError是内存溢出,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.
为什么在重新部署web应用程序时内存使用量会增加?
这是因为您的web应用程序存在内存泄漏。
一个常见的问题是“PermGen”内存泄漏。之所以会出现这种情况,是因为除非满足某些要求(
),否则类加载器(以及它加载的类对象)无法回收。它们由JVM存储在永久堆生成中,当您重新部署时,将创建一个新的类加载器,它将加载所有这些类的另一个副本。这最终会导致oufofmemory错误。

3 解决

在weblogic域的bin目录中(我的是D:\Develop\Weblogic\wls12120\user_projects\domains\mydomain\bin)的setDomainEnv.cmd(linux对应修改setDomainEnv.sh),查找-XX:MaxPermSize:
在这里插入图片描述
打开:
在这里插入图片描述
分别对应修改32 或 64位的服务器
这个参数是设置永久代区域的最大值,默认是256M,直接改成512M(可以根据自己电脑配置适当增大),保存,然后重新启动weblogic。发现weblogic运行速度加快,并且只有当本机内存被其他应用占用很多的时候才会再次出现这种错误。

问题解决。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值