项目中redeploy总是出现PermGen space的问题,于是上网查询,得到如下结论:

1. 什么是PermGen space:

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和metadata信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误。

2.常见情况:

2.1 如果你的WEB APP下都用了大量的第三方jar, 这些jar的class会被load(加载),其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

2.2 在tomcat中redeploy时也会出现outofmemory的错误. 因为tomcat redeploy时,会重新加载class。原来的class metadata没有被释放掉(没有被GC回收),多次redeploy后,大小超出就会出现这样的问题。

===============

原来SUN 的JVM把内存分了不同的区,其中一个就是permenter区用来存放用得非常多的类和类描述。本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收!

3. 解决办法:

解决方法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 文档重复占用内存的目的。

解决方法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

其他解决方案,可参考:http://blog.csdn.net/zenwong/article/details/2409775

java总是permgen out_java.lang.OutOfMemoryError: PermGen space及其解决方法相关推荐

  1. java总是permgen out_Eclipse--java.lang.OutOfMemoryError: PermGen space

    这一段时间,Eclipse总是死掉,几乎是稍微操作快一点就会死掉,几分钟一次,搞得人郁闷至极.浪费了不少时间,在网上搜了下,看到很多朋友也出现类似的情况,在网上求救,但是网上的办法都只是说通过修改ec ...

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

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

  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. 记录一次java.lang.OutOfMemoryError: PermGen space异常

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

  8. Weblogic java.lang.OutOfMemoryError: PermGen space

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

  9. Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的解决办法

    原文:http://cheen.iteye.com/blog/1687420 Tomcat启动时报如下错误:       java.lang.OutOfMemoryError: PermGen spa ...

最新文章

  1. PyTorch-Adam优化算法原理,公式,应用
  2. Pytorch上采样函数 包括interpolate
  3. 身为网络安全的,连BlackMatter勒索软件都不知道,说出去丢不丢人啊
  4. java lock 对象_Java并发编程锁系列之ReentrantLock对象总结
  5. Python+Flask+Echart+WordCloud:豆瓣爬虫项目的可视化数据
  6. ubuntu8.0中文输入法
  7. git submodule 子模块的管理和使用
  8. python实现括号分组
  9. SpringMVC配置任何类型转换器 Converter(以时间类型为例)
  10. android课程表设计报告,制作课程表教案设计
  11. 数据可视化插件 echart
  12. linux命令hexdump,Linux中hexdump命令起什么作用呢?
  13. 海思EC6108V9盒子DIY固件打包方法
  14. 关于android尺寸单位换算
  15. Python 决策树计算熵、gini系数、误分率
  16. 雷达传统的干扰方式(二次更新)
  17. apt gives “Unstable CLI Interface” warning
  18. 新加硬盘但计算机里找不着,win10新加的硬盘为什么不显示_win10新加的硬盘不显示恢复方法-win7之家...
  19. Markdown编辑器 公式指导手册
  20. Java 操作excel表格 - JXL(Java excel api)

热门文章

  1. android 无法添加帐户,android - Android SecurityException:uid xxxxx无法显式添加帐户 - 堆栈内存溢出...
  2. 网络交互实验实验总结
  3. 动态规划-最少硬币组合问题(Java)
  4. [转] TCP/IP原理、基础以及在Linux上的实现
  5. 物联网APP开发的好处有哪些
  6. 闽江学院计算机与控制工程学院在哪个校区,计算机与控制工程学院举行优秀校友分享会...
  7. Ubuntu 20.04 开启麦克风降噪功能
  8. 快速了解 Robot Operating System(ROS) 机器人操作系统
  9. 七牛云存储java上传图片
  10. 发布《区块链创新与知识产权发展白皮书》