In general, there are several types of leaks, and they are used to redeploy scripts. For production systems, it is best to perform reboots, if possible, as in today's applications there are so many different components and libraries that it is very difficult to find them all and even harder to fix them. Especially if you do not have access to the entire source code.
- Memory leak
- Leaks Thread and ThreadLocal
- Leaks ClassLoader
- System resource leaks
- Connection leaks
ClassLoader leaks are those that bite when redistributing .
They can be summoned by everyone. Indeed, I mean everything:
- : , , , WebappClassloader Tomcat.
- ThreadLocals: ThreadLocals . . ThreadLocal Thread, Thread , ThreadLocal , () . (ThreadLocals , Spring NamedThreadLocal). ThreadLocal , WebappClassloader, ClassLoader.
- :, . EhCache CacheManager
- : JavaBeans (, )
- JDBC:
.war . - - , ClassLoaders, Commons-Logging LogFactory
Tomcat, :
- "" Tomcat
- Tomcat , WebappClassloader. , null, webapp . NullPointerExceptions, , . Logger
- Tomcat , .
org.apache.catalina.core.JreMemoryLeakPreventionListener Tomcat 6.x
stresstesting - "" - Java.