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
)用于存放Class
和Meta
的信息。
Class
在被 Load
的时候被放入PermGen space
区域,它和存放Instance
的Heap
区域不同,GC(Garbage Collection)
不会在主程序运行期对PermGen space
进行清理。
所以如果你的APP
会LOAD
很多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
模式的默认内存分配时很少的。
选择Arguments
在VM 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 -Xmx512M
的5%
为25.6M。
理论上要求-Xmx
的数值与-XX:MaxPermSize
必须大于25.6M。
java.lang.OutOfMemoryError: PermGen space基于idea,MyEclipse或tomcat的详细解决方法以及详解JVM配置参数相关推荐
- 解决java虚拟机内存不足的错误 java.lang.OutOfMemoryError: PermGen space 没有文件TOMCAT_HOME/bin/catalina.sh
网上解决java.lang.OutOfMemoryError: PermGen space这个错误多数采用的是修改文件TOMCAT_HOME/bin/catalina.sh 的配置,经过我的实践发现此 ...
- Linux下启动tomcat报java.lang.OutOfMemoryError: PermGen space
2019独角兽企业重金招聘Python工程师标准>>> 一.错误信息 java.lang.reflect.InvocationTargetException at sun.r ...
- myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小java.lang.OutOfMemoryError: PermGen space及其解决方法...
摘要: tomcat部署多个项目后,启动tomcat正常,访问项目时却会出现该错误 在网上查了查又试了好几次,才解决,将解决方法记录下来,以方便以后查看或让遇到同样问题的朋友有个参考 PermGen ...
- 内存溢出数值jvm 内存溢出 在myeclipse中加大tomcat的jvm内存 java.lang.OutOfMemoryError: PermGen space...
废话就不多说了,开始... 每日一道理 站在历史的海岸漫溯那一道道历史沟渠:楚大夫沉吟泽畔,九死不悔:魏武帝扬鞭东指,壮心不已:陶渊明悠然南山,饮酒采菊--他们选择了永恒,纵然谄媚诬蔑视听,也不随其流 ...
- java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: PermGen space 摘要 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域 ...
- java.lang.OutOfMemoryError: PermGen space及其解决方法
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决 ...
- IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常
IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常 参考文章: (1)IntelliJ IDEA的Maven项目 ...
- JAVA编译异常处理:java.lang.OutOfMemoryError: PermGen space
JAVA编译异常处理:java.lang.OutOfMemoryError: PermGen space 参考文章: (1)JAVA编译异常处理:java.lang.OutOfMemoryError: ...
- Tomcat发布Maven项目遇到异常:java.lang.OutOfMemoryError: PermGen space
前言: 本问题出现在tomcat 7发布 web3.0Maven项目的时候出现. 问题阐述: 异常:java.lang.OutOfMemoryError:PermGen space 解决如下: 1. ...
最新文章
- 广联达2018模板算量步骤_老师傅带你学造价,广联达GTJ2018图文详解,小白也能学会的软件...
- html5抬头,HTML !DOCTYPE 标签
- 怎么修改antd mobile中picker样式_修改 iPhone 双信号方法,超级好玩
- React开发(199):参数请求错误修改请求
- Guacamole 是浏览器查看桌面的VNC
- cognos报表制作学习(一)cognos如何新建普通的reportstudio报表
- 百度硬盘搜索使用指南
- WIN7英文操作系统,中文语言包安装。及部分开发环境,软件中文乱码问题解决。
- matlab 二维离散傅立叶变换,二维离散傅里叶变换.PPT
- vSphere虚拟网络02 - 虚拟交换机
- 使用机器学习预测天气_使用机器学习来预测患者是否会再次入院
- hive中导入csv,把csv导入到hive表中步骤
- 盖世神器PowerPro使用视频教程-1. 程序的安装概述
- rocketMQ —— 02(集群搭建、rocketmq工作原理)
- 微信公众号【程序员杂货铺】
- 算法分析——Hanoi塔问题
- 一篇不错的项目管理之道
- 游戏设计自学记录(27)
- Micro(三)[服务创建]
- DPARSF关键字含义
热门文章
- 2018年5月9日至5月10日
- revit对齐命令选不中_Revit对齐命令的应用方法:关于Revit中模型填充图案线与门窗构建对齐及标注的方法...
- 使用OpenSSL自签证书
- AITO问界系列大卖背后,华为正在孵化更多的“赛力斯”
- 公司实施股权激励有什么用?
- 最新希腊计算机,史前文明出现了?希腊海底出现一台计算机,距今已2000多年!...
- 全网最细最全OLAP之clickhouse笔记|clickhouse文档|clickhouse揭秘文档(一)--clickhouse简介
- 国行版 P30 价格公布,除了拍照逆天,这些功能也很强
- pic单片机c语言延时程序,PIC单片机C语言精确控制时间
- 实习------Java基础