sshe运行几天后报outofmemoryerror permgen space
2015-11-26 11:34
274 查看
进新公司后应公司要求开了一个新系统,oa系统,这几个月都在弄考勤模块,最近上线后用户多了,运行几天后就挂了报outofmemoryerror permgen space!
tomcat也没有报出是哪个地方,哪个方法有问题!
由于系统在生成考勤数据,排班数据,月报表,导入打卡记录均运用多线程以提高速度!感觉是多线程里出了问题,人一多,线程就会开得多,可能某些资源分给线程了,没有主动回收造成内存泄漏!
最终在各个线程里发现,运用线程泄技术,给每个线程传全局的list数据,这样垃圾回收无法知道这些list是否已经失效,所以在线程执行完后得主动把这些list之类的集合清空设为null!
特别是导入打卡记录,二万多笔,为了加快速度,思路是先读这二万多笔数据到map,然后再根据一人一条线程分到一个list,list里页面存着每个人的一月打卡数据list,在执行多线程时,map已经处理完了不需要使用了,但所有线程执行完还要很久,此时map会一直占用资源,不能给回收,所以在多线程启动前就应该把map清空设为null,达到回收!
以后均是达到垃圾回收的内存,事实是permgen space是永久内存区域,这地方并不会垃圾内存回收,这个是用来装载类的,并不是执行的,一般是固定的,只有新访问一个action时才会增加,并访问过这个action类后,以后再访问就不会再增加了;所以解决这个问题的根本就是加大这个设置的内存
在tomcat的
- 在catalina.bat的第一行增加:
- 在catalina.sh的第一行增加:
- set JAVA_OPTS=-Xms1024m -Xmx1024m -Xss1024K -XX:PermSize=64m -XX:MaxPermSize=128m
其中XX:MaxPermSize 这个值设为自己应用的合理值就行了!
相关文章推荐
- sshe运行几天后报outofmemoryerror permgen space
- tomcat 配置 OutOfMemoryError: Java heap space OutOfMemoryError: PermGen space OutOfMemoryError: unable
- weblogic java.lang.OutOfMemoryError PermGen space及其解决方法
- How to fix the dreaded "java.lang.OutOfMemoryError: PermGen space" exception (classloader leaks)
- java.lang.outofmemoryerror permgen space
- Myeclipse运行程序时,发生异常:Exception in thread ""http-bio-8080"-exec-1" java.lang.OutOfMemoryError: PermGen
- 有关tomcat内存不足报错为:java.lang.OutOfMemoryError: PermGen space问题;
- tomcat:java.lang.outofmemoryerror permgen space
- java.lang.OutOfMemoryError: PermGen space JVM内存参数配置
- Eclipse tomcat 内存溢出(java.lang.OutOfMemoryError: PermGen space)
- https://stackoverflow.com/questions/16130292/java-lang-outofmemoryerror-permgen-space-java-reflection
- java.lang.OutOfMemoryError PermGen space及其解决方法
- java.lang.outofmemoryerror permgen space
- 运行的程序时,出现内存不足时的解决方式Exception in thread "main" java.lang.OutOfMemoryError: Java heap space(转)
- Tomcat6:java.lang.outofmemoryerror permgen space
- java.lang.OutOfMemoryError: PermGen space tomcat启动项目出错
- Hadoop运行Mapreduce作业时报错:java.lang.OutOfMemoryError: Java heap space
- Mtalab 运行问题:java.lang.OutOfMemoryError:Java heap space
- tomcat 启动时候常见的2个异常OutOfMemoryError : PermGen space OutOfMemoryError: Java heap space
- java.lang.OutOfMemoryError: PermGen space eclipse解决方法