停止Tomcat服务的时候,log里面报了不少的内存错误信息。经查询是Tomcat6.0.24以后会检测到的问题。
Summary matrix
Leak cause |
Detected by tomcat |
Fixed by tomcat |
Possible enhancements |
>=6.0.24 |
>= 7.0.6 |
||
>=6.0.24 |
>= 7.0.6 |
||
Webapp class instance indirectly held through a ThreadLocal value |
no |
>= 7.0.6 |
|
>=6.0.24 |
>= 7.0.6 |
||
>=6.0.24 |
In 6.0.24-6.0.26 TimerThread are stopped but it may lead to problems. Optional from 6.0.27 with the clearReferencesStopTimerThreads flag. Other threads may be stopped with the clearReferencesStopThreads flag, but it's unsafe. |
Fix the application to stop the thread when the application is stopped |
|
ContextClassLoader / Threads spawned by classes loaded by the common classloader |
>=6.0.24 |
In 6.0.24-6.0.26 TimerThread are stopped but it may lead to problems. Optional from 6.0.27 with the clearReferencesStopTimerThreads flag. Other threads may be stopped with the clearReferencesStopThreads flag, but it's unsafe. |
Fix the offending code (set the correct CCL when spawning the thread) |
no |
>=6.0.24 pre-spawns some known offenders |
||
no |
> 6.0.? . Disabled by default with tomcat 7 |
||
> 6.0.? |
|||
> 6.0.? |
> 6.0.? |
||
> 6.0.? |
还没升级的情况下,比如ThreadLocal的内存泄漏问题,Tomca7中是用ThreadLocalLeakPreventionListener来解决的。
而Tomcat6.0.24以后可以用Context#clearReferencesThreadLocals=true来解决。
参考URL:http://www.atmarkit.co.jp/fjava/rensai4/tomcat7_03/02.html
http://wiki.apache.org/tomcat/MemoryLeakProtection