首页 > 其他 > 详细

Tomcat 6.x Perm区内存泄露问题

时间:2017-06-25 21:03:46      阅读:265      评论:0      收藏:0      [点我收藏+]
Tomcat 6.x
JSP文件最后改动时间大于当前系统时间导致Perm区内存泄露问题(java Memory pool CMS Perm Gen)


出现场景:
因为測试业务,须要模拟跨天測试,所以一般会採用改动server实现。来完毕測试业务,測试完毕后,不会马上同步系统时间。而直接公布上线,这时问题就出现了,因为使用穿越时间打包的,所以打包的全部文件最后改动时间都穿越了。
比如:今天是:2015.1.1  为了完毕測试,把系统时间穿越到 2015.1.5.  这个时候打包的全部文件最后改动时间都是2015.1.5号

这原本仅仅是文件的最后改动时间的穿越而已。因为Tomcat 支持JSP的热公布特性,每一个4秒就会检測一次JSP文件的变更,因为JSP文件的最后改动时间超过了当前系统时间之后的好几天。从而这几天每一个4s(Tomcat 热公布延迟时间)Tomcat就会又一次触发热公布,说白了就是使用自己定义类载入机制从新载入Class 类,因为JDK1.6 Class info 存在在Perm区,并且这个区域的内存回收很苛刻,从而导致一直大量的载入新的Class,导致Perm区内存溢出。


改动方法就是直接将公布server时间同步下,就能够了。


Tomcat 7 中已经修复这个问题了。
定位Class load  问题。能够通过在Tomcat 启动时添加JVM 參数:-XX:+TraceClassLoading -XX:+TraceClassUnloading

Tomcat 6.x Perm区内存泄露问题

原文:http://www.cnblogs.com/tlnshuju/p/7077841.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!