700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java.lang.OutOfMemoryError: PermGen space基于idea MyEclipse或tomcat的详细解决方法以及详解JVM配置参数

java.lang.OutOfMemoryError: PermGen space基于idea MyEclipse或tomcat的详细解决方法以及详解JVM配置参数

时间:2020-12-21 13:32:52

相关推荐

java.lang.OutOfMemoryError: PermGen space基于idea MyEclipse或tomcat的详细解决方法以及详解JVM配置参数

文章目录

1. 引出问题2. 分析问题3. 解决问题3.1 手动设置tomcat的MaxPermSize大小3.2 基于MyEclipse的修改3.3 基于idea的修改 4. jvm配置参数详解

1. 引出问题

今天,在回顾开发曾遇到的问题,忽起来java.lang.OutOfMemoryError: PermGen space,如下图所示:

2. 分析问题

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。

OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。

为什么会内存益出?

这一部分(PermGen space)用于存放ClassMeta的信息。

Class在被Load的时候被放入PermGen space区域,它和存放InstanceHeap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理。

所以如果你的APPLOAD很多CLASS的话,就很可能出现PermGen space错误。

这种错误常见在web服务器对JSP进行pre compile的时候。

3. 解决问题

3.1 手动设置tomcat的MaxPermSize大小

我们需要修改TOMCAT_HOME/bin/catalina.bat(windows系统)或者catalina.sh(unix系统)

windows系统:

打开TOMCAT_HOME/bin/catalina.bat文件

在这句话echo Using CATALINA_BASE: "%CATALINA_BASE%"的上面添加如下行:

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

unix系统

vim打开catalina.sh文件

在这句话echo "Using CATALINA_BASE: $CATALINA_BASE"上面或第一行添加此行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

或者加入如下行:

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

3.2 基于MyEclipse的修改

如果是通过MyEclipse启动服务器来启动Tomcat的话,需要在MyEclipse里面同样设置内存大小:

MyEclipse中原配置的java虚拟机参数为:

-Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M

如下图所示:

默认配置java虚拟机参数为-Xms64m -Xmx256m,如下图所示:

修改eclipse.ini

Myeclipse安装目录下有一个myeclipse.ini配置文件,设置如下:

-vmargs-Xmx512m-XX:MaxPermSize=256m-XX:ReservedCodeCacheSize=64m

我的MyEclipse的安装目录是G:\MyEclipse8.5\Genuitec\MyEclipse 8.5,你可以根据自己的安装目录来。

设置Default VM Arguments

myEclipse中,打开Windows -> Preferences -> Java -> Installed JREs -> 点击正在使用的JDK -> Edit -> Default VM Arguments文本框中输入:-Xms64m -Xmx256m

如果是web工程还报内存溢出,可能就要设置tomcat内存。

tomcat的安装根目录%tomcat%bin/catalina.bat文件,SET JAVA_OPTS一行

myeclipse配置web服务器配置Window -> Preferences -> Myeclipse -> Servers -> tomcat 5.x -> JDK的Optional Java VM arguments配置为:

-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

如果是debug模式运行,需要调整debug的虚拟机参数,因为debug模式的默认内存分配时很少的。

选择ArgumentsVM arguments里面填写内存值如下:

-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

3.3 基于idea的修改

如果你的编辑器是idea,可以进行如下修改:

打开Tomcat配置Edit Configurations点击Server,在VM options输入框输入如下配置

-Xms512m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=2048m

点击ok即可。

如果不点击ok,则配置不生效。

4. jvm配置参数详解

一般的ini文件设置主要包括以下几项:

-vmargs-Xms40m-Xmx256m-XX:PermSize=64M-XX:MaxPermSize=128M

参数解释为:

-vmargs:说明后面是VM的参数

-Xms40m:虚拟机占用系统的最小内存

-Xmx256m:虚拟机占用系统的最大内存

-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设大一点,不过要视自己机器内存大小来设置

-XX:MaxPermSize:最大堆大小。这个也适当大些,所以若出现问题,首先请调整-Xms40m:将其设置的小一些,就ok了。

如果你的是1g内存,推荐设置为:

-vmargs-Xms128M-Xmx512M-XX:PermSize=256M-XX:MaxPermSize=512M

其中-XX:PermSize=64M可以设置大一些,但不能超过MaxPermSize -Xmx512M5%为25.6M。

理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。