异常: 项目中遇到了系统停止响应的问题,查看日志发现Tomcat报告Caused by: java.lang.OutOfMemoryError: PermGen space异常,开始以为是程序内存泄漏导致的内存溢出,网上查了一下,原来是另有原因,不过确实是内存溢出。

原因: 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)那么就会产生此错误信息了。

以下是网上的各种说法:

(1)这是由于Tomcat不太稳定的hot publisher/hot

deployer导致的内存泄露,建议关闭Eclipse中服务器配置的autopublishing功能,然后手动重新启动Tomcat,或者去掉tomcat的webapps文件中已经不需要的那些项目。

(2)发现很多人把问题归因于:spring,hibernate,tomcat,因

为他们动态产生类,导致JVM中的permanent heap溢出

。然后解决方法众说纷纭,有人说升级tomcat版本到最新甚至干脆不用tomcat。还有人怀疑spring的问题,在spring论坛上讨论很激烈,

因为spring在AOP时使用CBLIB会动态产生很多类。但问题是为什么这些王牌的开源会出现同一个问题呢,那么是不是更基础的原因呢?tomcat在Q&A很隐晦的回答了这一点,我们知道这个问题,但这个问题是由一个更基础的问题产生。于

是有人对更基础的JVM做了检查,

发现了问题的关键。原来SUN的JVM把内存分了不同的区,其中一个就是permenter区用来存放用得非常多的类和类描述。本来SUN设计的时候认为

这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域

后,gc根本没办法回收!2003年的时候就有一个bug报告给sun,但是到现在,这个bug还没有close!有人在这个bug加了句评语:“A

bug this critical is open since 2003? Absolutely shameful.”(3)It's usually happened when the Tomcat start and stop few times. It’s

just funny, however you can fine tune it with some minor changes

in the Tomcat configuration setting. By default, Tomcat assigned very

little memory for the running process, you should increase thememory by

make change in catalina.sh or catalina.bat file.

解决方法: 手动设置MaxPermSize大小

设置参数 -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

Tomcat中,修改TOMCAT_HOME/bin/catalina.sh(linux系统下start.sh会调用它来启动tomcat,windows下调用catalina.bat,修改类似)

在文件头部注释后加入

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

如果tomcat运行多个系统,将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少

jar 文档重复占用内存的目的。

——————————————————————————————————————————————

发现要这样写才起作用

set "JAVA_OPTS=-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m"

set "JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m"

caused by: java.lang.outofmemory_Caused by: java.lang.OutOfMemoryError: PermGen space相关推荐

  1. Tomcat Caused by java lang OutOfMemoryError PermGen space

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 这个应该 ...

  2. IDEA运行项目出现Caused by:java.lang.OutOfMemoryError: PermGen space

    问题描述:利用IDEA运行比较旧的项目,项目启动时出现了Caused by:java.lang.OutOfMemoryError: PermGen space 解决方法:出现该问题的原因是JVM内存溢 ...

  3. java.lang.OutOfMemoryError: PermGen space及其解决方法

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决 ...

  4. IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常

    IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常 参考文章: (1)IntelliJ IDEA的Maven项目 ...

  5. JAVA编译异常处理:java.lang.OutOfMemoryError: PermGen space

    JAVA编译异常处理:java.lang.OutOfMemoryError: PermGen space 参考文章: (1)JAVA编译异常处理:java.lang.OutOfMemoryError: ...

  6. Tomcat发布Maven项目遇到异常:java.lang.OutOfMemoryError: PermGen space

    前言: 本问题出现在tomcat 7发布 web3.0Maven项目的时候出现. 问题阐述: 异常:java.lang.OutOfMemoryError:PermGen space 解决如下: 1.  ...

  7. HTTP Status 500 - javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space

    详细错误信息 HTTP Status 500 - javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen spacety ...

  8. 记录一次java.lang.OutOfMemoryError: PermGen space异常

    2019独角兽企业重金招聘Python工程师标准>>> 问题描述 线上右键告警,报错 OutOfMemoryError 拉取出日志,发现同样的问题: 2018-11-13 10:23 ...

  9. Weblogic java.lang.OutOfMemoryError: PermGen space

    错误信息 Error 500--Internal Server Error java.lang.OutOfMemoryError: PermGen space 解决 D:\SDE\weblogic\M ...

最新文章

  1. 阿里巴巴测试环境稳定性提升实践
  2. .NET中小数,浮点数和双精度之间的区别?
  3. Java是解释型还是编译型?
  4. 图数据库Neo4j的介绍与使用
  5. windows 10下载链接
  6. logstash的使用教程
  7. Boosting Xgboost
  8. Java操作mongoDB2.6的常见API使用方法
  9. No SOURCES given to target: mpeg
  10. linux错误—2.man:command not found
  11. 5双机配置_SBC双机热备解决方案
  12. 安装Oracle11gR2先决条件检查失败的详细解决处理过程
  13. android checkbox点击,android的CheckBox点击全选信息反馈不正常,该如何解决
  14. 《数字孪生体技术白皮书》重磅发布(附完整版下载)
  15. WIN10开启Hyper-V虚拟化功能
  16. 三星手机和计算机如何连接打印机,WIFI当道 手把手教你如何实现无线打印
  17. 概率论与数理统计--大数定律与中心极限定理
  18. 2019牛客多校第8场
  19. 怎么判断私网地址_判断本机IP地址是公网地址还是私网地址
  20. 可扩展的交互式可视化框架,用于衡量新闻中的性别偏见

热门文章

  1. C++ memset 栈空间出现段错误
  2. ABP动态生成WebAPI
  3. 老男孩python第一天笔记
  4. 堆排序建堆复杂度在特殊情况下的推导
  5. Linux之date命
  6. linux删除目录下文件的几种方法
  7. re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析
  8. linux下查看CPU、内存、磁盘信息
  9. js_ Math 方法
  10. 《Linux 设备驱动开发详解(第2版)》——1.4 Linux设备驱动