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.报错:

  1. Exception in thread "DispatcherThread" java.lang.OutOfMemoryError: PermGen space
  2. Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space
  3. Exception in thread "State Saver" java.lang.OutOfMemoryError: PermGen space
  4. 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文件,修改如下:

  1. -vmargs
  2. -Dosgi.requiredJavaVersion=1.5
  3. -Xms128m
  4. -Xmx512m
  5. -XX:PermSize=64M
  6. -XX:MaxPermSize=128M

如果还报错,可以考虑如下修改

  1. -vmargs
  2. -Dosgi.requiredJavaVersion=1.5
  3. -Xms512m
  4. -Xmx1024m
  5. -XX:PermSize=256M
  6. -XX:MaxPermSize=512M

报错:

  1. 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
  2. 严重: 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.
  3. 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
  4. 严重: 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.
  5. 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
  6. 严重: 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.
  7. 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
  8. 严重: 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.
  9. 2011-11-21 21:10:46 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
  10. 严重: 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.
  11. 2011-11-21 21:10:50 org.apache.catalina.core.ApplicationContext log
  12. 信息: Initializing Spring FrameworkServlet 'Dispatcher'

修改catalina.bat

添加

  1. JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
  2. -server -Xms1536m -Xmx1536m
  3. -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
  4. -XX:MaxPermSize=256m -XX:+DisableExplicitGC"

样例

  1. #   JSSE_HOME       (Optional) May point at your Java Secure Sockets Extension
  2. #                   (JSSE) installation, whose JAR files will be added to the
  3. #                   system class path used to start Tomcat.
  4. #
  5. #   CATALINA_PID    (Optional) Path of the file which should contains the pid
  6. #                   of catalina startup java process, when start (fork) is used
  7. #
  8. # $Id: catalina.sh 609438 2008-01-06 22:14:28Z markt $
  9. # -----------------------------------------------------------------------------
  10. JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m
  11. -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
  12. -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
  13. # OS specific support.  $var _must_ be set to either true or false.
  14. cygwin=false
  15. os400=false
  16. darwin=false
  17. case "`uname`" in
  18. CYGWIN*) cygwin=true;;
  19. OS400*) os400=true;;
  20. Darwin*) darwin=true;;
  21. esac
  22. # resolve links - $0 may be a softlink
  23. PRG="$0"

具体参数根据自己机器情况而定

    1. JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m
    2. -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
    3. -XX:MaxPermSize=256m -XX:+DisableExplicitGC"

关于PermGen space内存溢出错误解决方法的更多相关文章

  1. Java常见的几种内存溢出及解决方法

    Java常见的几种内存溢出及解决方法[情况一]:java.lang.OutOfMemoryError:Javaheapspace:这种是java堆内存不够,一个原因是真不够(如递归的层数太多等),另一 ...

  2. Oracle OCI-22053:溢出错误解决方法

    原文 Oracle OCI-22053:溢出错误解决方法 Oracle 数值数据类型最多可存储 38 个字节的精度.当将 Oracle 数值转换为公共语言运行库数据类型时,小数点后边的位数可能过多,这 ...

  3. MyEclipse 2015 运行tomcat 内存溢出的解决方法

    内存溢出错误: 2016-3-16 11:19:55 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() ...

  4. 解决eclipse报PermGen space内存溢出异常的问题

    异常问题如下所示: 1.点击Eclipse->Window->Preferences,如下所示: 2.点击Server->Runtime Environments,选择Apache ...

  5. Ecshop 后台导出订单Excel时, 内存溢出的解决方法

    今天继续跟大家分享一下,在我配置Ecshop时的问题. 今天的问题是在后台想要导出订单列表Excel时出现的内存溢出.错误提示如下 问题:  Fatal error: Allowed memory s ...

  6. DiskGenius的 “终止位置参数溢出”错误解决方法。

    (转帖)同事电脑系统启动突然明显变慢,重装系统后问题仍未解决(windowsxp sp3).帮忙分析感觉是磁盘分区表出现了错误,用通用PE工具箱进入PE系统,DiskGenius工具检查:“终止位置参 ...

  7. 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)

    限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事:(1)不同语言字符(英文.中文等)处理方式(2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实蛮多 ...

  8. Android EditText输入字数限制总结(包含中文输入内存溢出的解决方法)

    转载请注明,大飞:http://blog.csdn.net/rflyee/article/details/38856539 限定EditText输入个数的解决方式非常多,可是一般主要考虑两点.也就是处 ...

  9. eclipse启动Tomcat加载项目时报内存溢出错误解决办法

    在eclipse中点击Window->Preferences打开全局属性设置对话框,如下图所示设置Tomcat运行时的JVM参数,添加这段JVM设置:-Xms256M -Xmx768M -XX: ...

随机推荐

  1. 20145304 Exp9 Web安全基础实践

    20145304 Exp9 Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL注入是将查询语句当做查询内容输入到查询的框中,以此来使服务器执行攻击者想让它执行的语句,而不是 ...

  2. 20145336张子扬 《网络对抗技术》 PC平台逆向破解

    #20145336张子扬 <网络对抗技术> PC平台逆向破解 ##Shellcode注入 **基础知识** Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对 ...

  3. 20135234mqy-——信息安全系统设计基础第九周学习总结

    第十章 系统级I/O 10.1 Unix I/O 一个Unix文就是一个m个字节的序列 Unix:将设备映射为文件的方式,允许Unix内核引出一个简单低级的应用接口 能够使得所有输入输出都能以一种统一 ...

  4. devicePixelRatio手机图片模糊的原因

    一.移动设备图片模糊问题 手机上图片模糊问题原因就是一个像素在电脑上和手机上代表的实际像素的不同. 我们在样式表中使用的px(独立像素)单位其实并不一定代表着实际的一个像素(物理像素),这还要看硬件的 ...

  5. noip 2013 提高组 Day2 部分题解

    积木大赛: 之前没有仔细地想,然后就直接暴力一点(骗点分),去扫每一高度,连到一起的个数,于是2组超时 先把暴力程序贴上来(可以当对拍机) #include<iostream> #incl ...

  6. tensorflow的写诗代码分析【转】

    本文转载自:https://dongzhixiao.github.io/2018/07/21/so-hot/ 今天周六,早晨出门吃饭,全身汗湿透.天气真的是太热了!我决定一天不出门,在屋子里面休息! ...

  7. ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer 最大生成树 lca

    大概就是要每两个点 只能有一条路径,并且约束,最短的边用来砌墙,那么反之的意思就是最大的边用来穿过 故最大生成树 生成以后 再用lca计算树上两点间的距离 (当然防止生成树是一条链,可以用树的重心作为 ...

  8. UVa 1151 买还是建

    https://vjudge.net/problem/UVA-1151 题意: 平面上有n个点,你的任务是让所有n个点连通.为此,你可以新建一些边,费用等于两个端点的距离平方和.另外还有q个套餐可以购 ...

  9. ros python 重置位置

    #!/usr/bin/env python import rospy import math import sys import commands import yaml from tf import ...

  10. visudo使用笔记

    目录前言一.介绍二.配置文件简介三.实战配置 前言:    su 的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成 ...