关于PermGen space内存溢出错误解决方法
1.参考:
http://blog.csdn.net/fox009/article/details/5633007
http://hi.baidu.com/like_dark/blog/item/19c1948b3292b0799f2fb468.html
http://anyeeye.iteye.com/blog/444624
Tomcat6性能调优 出现java.lang.OutOfMemoryError: PermGen space
http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/
https://blog.csdn.net/xw13106209/article/details/6996976
http://outofmemory.cn/c/java-outOfMemoryError
2.报错:
- Exception in thread "DispatcherThread" java.lang.OutOfMemoryError: PermGen space
- Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space
- Exception in thread "State Saver" java.lang.OutOfMemoryError: PermGen space
- Exception in thread "AWT-Windows" java.lang.OutOfMemoryError: OutOfMemoryError
3.原因:
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,
这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,
它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对
PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小
超过了jvm默认的大小(4M)那么就会产生此错误信息了。
4.解决方法1:
手动设置MaxPermSize大小,如果是linux系统,修改TOMCAT_HOME/bin/catalina.sh,如果是windows系统,修改TOMCAT_HOME/bin/catalina.bat,
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。
如果依然不行,请改为
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=512m
5.解决方法2
修改eclipse.ini文件,修改如下:
- -vmargs
- -Dosgi.requiredJavaVersion=1.5
- -Xms128m
- -Xmx512m
- -XX:PermSize=64M
- -XX:MaxPermSize=128M
如果还报错,可以考虑如下修改
- -vmargs
- -Dosgi.requiredJavaVersion=1.5
- -Xms512m
- -Xmx1024m
- -XX:PermSize=256M
- -XX:MaxPermSize=512M
报错:
- 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
- 严重: The web application [/Application] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
- 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
- 严重: The web application [/Application] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.
- 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
- 严重: The web application [/Application] appears to have started a thread named [AWT-Windows] but has failed to stop it. This is very likely to create a memory leak.
- 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
- 严重: The web application [/Application] appears to have started a thread named [Thread-14] but has failed to stop it. This is very likely to create a memory leak.
- 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
- 严重: The web application [/Application] created a ThreadLocal with key of type [net.sf.json.AbstractJSON$1] (value [net.sf.json.AbstractJSON$1@3661eeb]) and a value of type [java.util.HashSet] (value [[]]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
- 2011-11-21 21:10:50 org.apache.catalina.core.ApplicationContext log
- 信息: Initializing Spring FrameworkServlet 'Dispatcher'
修改catalina.bat
添加
- JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
- -server -Xms1536m -Xmx1536m
- -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
- -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
样例
- # JSSE_HOME (Optional) May point at your Java Secure Sockets Extension
- # (JSSE) installation, whose JAR files will be added to the
- # system class path used to start Tomcat.
- #
- # CATALINA_PID (Optional) Path of the file which should contains the pid
- # of catalina startup java process, when start (fork) is used
- #
- # $Id: catalina.sh 609438 2008-01-06 22:14:28Z markt $
- # -----------------------------------------------------------------------------
- JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m
- -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
- -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
- # OS specific support. $var _must_ be set to either true or false.
- cygwin=false
- os400=false
- darwin=false
- case "`uname`" in
- CYGWIN*) cygwin=true;;
- OS400*) os400=true;;
- Darwin*) darwin=true;;
- esac
- # resolve links - $0 may be a softlink
- PRG="$0"
具体参数根据自己机器情况而定
- JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m
- -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
- -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
关于PermGen space内存溢出错误解决方法的更多相关文章
- Java常见的几种内存溢出及解决方法
Java常见的几种内存溢出及解决方法[情况一]:java.lang.OutOfMemoryError:Javaheapspace:这种是java堆内存不够,一个原因是真不够(如递归的层数太多等),另一 ...
- Oracle OCI-22053:溢出错误解决方法
原文 Oracle OCI-22053:溢出错误解决方法 Oracle 数值数据类型最多可存储 38 个字节的精度.当将 Oracle 数值转换为公共语言运行库数据类型时,小数点后边的位数可能过多,这 ...
- MyEclipse 2015 运行tomcat 内存溢出的解决方法
内存溢出错误: 2016-3-16 11:19:55 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() ...
- 解决eclipse报PermGen space内存溢出异常的问题
异常问题如下所示: 1.点击Eclipse->Window->Preferences,如下所示: 2.点击Server->Runtime Environments,选择Apache ...
- Ecshop 后台导出订单Excel时, 内存溢出的解决方法
今天继续跟大家分享一下,在我配置Ecshop时的问题. 今天的问题是在后台想要导出订单列表Excel时出现的内存溢出.错误提示如下 问题: Fatal error: Allowed memory s ...
- DiskGenius的 “终止位置参数溢出”错误解决方法。
(转帖)同事电脑系统启动突然明显变慢,重装系统后问题仍未解决(windowsxp sp3).帮忙分析感觉是磁盘分区表出现了错误,用通用PE工具箱进入PE系统,DiskGenius工具检查:“终止位置参 ...
- 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)
限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事:(1)不同语言字符(英文.中文等)处理方式(2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实蛮多 ...
- Android EditText输入字数限制总结(包含中文输入内存溢出的解决方法)
转载请注明,大飞:http://blog.csdn.net/rflyee/article/details/38856539 限定EditText输入个数的解决方式非常多,可是一般主要考虑两点.也就是处 ...
- eclipse启动Tomcat加载项目时报内存溢出错误解决办法
在eclipse中点击Window->Preferences打开全局属性设置对话框,如下图所示设置Tomcat运行时的JVM参数,添加这段JVM设置:-Xms256M -Xmx768M -XX: ...
随机推荐
- Linux 进程学习笔记
1.什么是程序?什么是进程?它们有什么区别? 定义: 程序:程序(Program)是一个静态的命令集合,程序一般放在磁盘中,然后通过用户的执行来触发.触发后程序会加载到内存中成为一个个体,就是进程. ...
- 20145329 《网络对抗技术》Web安全基础实践
实践的目标 理解常用网络攻击技术的基本原理.Webgoat实践下相关实验:SQL注入攻击.XSS攻击.CSRF攻击. 实验后回答问题 (1)SQL注入攻击原理,如何防御 攻击原理 SQL注入即是指we ...
- 20145332卢鑫 MSF基础应用
20145332卢鑫 MSF基础应用 实验过程 靶机的IP地址:192.168.10.160 Kali的IP地址:192.168.10.128 1.一个主动攻击 攻击XP系统的漏洞:ms08_067 ...
- 20145336张子扬《网络对抗》MSF基础应用
20145336张子扬 <网络对抗>MSF基础应用 实验一:主动攻击,利用ms08_067漏洞进行攻击 首先使用use exploit/windows/smb/ ms08_067 _net ...
- Vue 父组件循环使用refs调用子组件方法出现undefined的问题
Vue 父组件循环使用refs调用子组件方法出现undefined的问题 1. 背景 最近前端项目遇到一个问题,我在父组件中使用了两个相同的子组件child,分别设置ref为add和update.其中 ...
- 关于python环境的一些安装设置
操作系统Redhat Linux,自带python2.6.Python程序的运行其实相当简单,只需在操作系统中安装并配置好python环境即可,和运行java需要配置jre一样(哪里简单,真简单就不会 ...
- Django组件(三) Django之中间件
中间件概述 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到性 ...
- 将kali linux装入U盘 制作随身携带的kali linux
一 准备工作 USB3.0 U盘 不小于32G USB2.0的U盘安装速度要比3.0的慢一倍以上,运行也会有明显差别,所以建议使用3.0U盘.安装好之后差不多就得占用十几G,所以16G的太小了,尽量用 ...
- 再谈树---无根树转有根树( dfs搜索转化+fa数组记录父节点) *【模板】
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <vector> ...
- UVA 3942 Remember the Word (Trie+DP)题解
思路: 大白里Trie的例题,开篇就是一句很容易推出....orz 这里需要Trie+DP解决. 仔细想想我们可以得到dp[i]=sum(dp[i+len[x]]). 这里需要解释一下:dp是从最后一 ...