weblogic报java.lang.OutOfMemoryError: PermGen space

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

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


1 发现问题

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



image.png

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,即永久代或方法区。



目录
相关文章
|
7月前
|
Java Linux
8 种 Java- 内存溢出六 -Out of swap space?
8 种 Java- 内存溢出六 -Out of swap space?
|
26天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
5月前
|
存储 Java 程序员
Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别
Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别
225 11
|
5月前
|
Java 关系型数据库 数据库
实时计算 Flink版操作报错合集之拉取全量数据时,如何解决Checkpoint失败并且报错为 "java.lang.OutOfMemoryError: Java heap space"
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7月前
|
存储 Java 关系型数据库
8 种 Java- 内存溢出之三 -Permgen space
8 种 Java- 内存溢出之三 -Permgen space
|
7月前
|
缓存 Java
8 种 Java 内存溢出之一:Java Heap Space
8 种 Java 内存溢出之一:Java Heap Space
|
Java Android开发
Java Heap Space: Understanding and Resolving Memory Issues
Java Heap Space: Understanding and Resolving Memory Issues
|
Java 应用服务中间件
如果 JAVA 程序中抛出了 java.lang.OutOfMemoryError:Java heap space ,请讲一下解决问题的思路。
如果 JAVA 程序中抛出了 java.lang.OutOfMemoryError:Java heap space ,请讲一下解决问题的思路。
102 0
|
SQL 资源调度 Java
【Big Data】解决Hive查询出现Java.lang.OutMemoryError.java heap space
解决出现Java.lang.OutMemoryError.java heap space和FAILED:Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
488 0
|
Java Maven
pom.xml出现“java.lang.OutOfMemoryError: Java heap space”问题的解决办法
pom.xml出现“java.lang.OutOfMemoryError: Java heap space”问题的解决办法
760 1
pom.xml出现“java.lang.OutOfMemoryError: Java heap space”问题的解决办法