欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

完美解决PermGen space异常的问题

时间:2021-07-03 08:28:08|栏目:JAVA代码|点击:

开发中遇到Eclipse报错:java.lang.OutOfMemoryError: PermGen space。

PermGen space百度翻译为:永久区域内存不足。

1. 先来一张jvm结构图:

内存不足问题一般都是发生在'堆‘上,GC作用区域也是在'堆‘上。

2. 这个'堆‘又划分成了好几块区域,包括:

新生代:包括伊甸园区和存活区。

老年代:

永久带:jdk1.8后变成元空间,元空间不再占用堆中的空间,而永久带却是在堆中开辟空间。

可以发现,堆中就有个永久区。永久区的内存溢出,其实就是堆的内存不够用。

只需要调大堆的内存大小就可以解决问题。

3. 调整堆大小的参数:

-Xms256m -Xmx1024m

-Xms:堆的初始化大小,这里设置成了256m.

-Xmx:堆最大的大小,这个设置成了1024m.

这里面就存在了一个可伸缩的空间,而这个空间的存在会损耗服务的性能。因为扩容和释放空间都是有性能损耗的。

最好的办法就是:-Xms和-Xmx设置成同样的大小。这样就不存在可伸缩的空间了。

4. jvm参数的配置位置。

a. 如果是使用tomcat服务:

修改tomcat/bin目录下的catalina.bat。(windows环境下修改文件catalina.bat, linux环境下修改文件catalina.sh)

配置在文件的第一行: 

b.如果是eclipse

修改eclipse的Run Configurations。(如果是debug模式,修改Debug Configurations。)

写在此处,方便拷贝:

-Xms256m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=512m

c.如果已经被配置成了服务

这种情况,就需要修改注册表了。

c1. regedit命令打开注册表。

c2. 找到配置的tomcat服务。

修改:JvmMs,JvmMx,Options里面的参数值。

c3. 修改完毕后需要重启服务。

d. Eclipse的配置文件eclipse.ini中也可以配置jvm参数。

-vmargs
-Xms512m
-Xmx1024m
-XX:PermSize=256M 
-XX:MaxPermSize=512M

至此,内存溢出的问题应该就解决了。

上一篇:Java内存释放实现代码案例

栏    目:JAVA代码

下一篇:Java实现的计算最大下标距离算法示例

本文标题:完美解决PermGen space异常的问题

本文地址:http://www.codeinn.net/misctech/152052.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有