Andrea Vettori created WW-5537:
----------------------------------

             Summary: Memory Leak 
                 Key: WW-5537
                 URL: https://issues.apache.org/jira/browse/WW-5537
             Project: Struts 2
          Issue Type: Bug
          Components: Core
    Affects Versions: 6.7.0
         Environment: JDK 17

Tomcat 9
            Reporter: Andrea Vettori


Struts is leaking memory when a WAR is hot deployed in Tomcat: for each hot 
deploy some classes remain in memory instead of being garbage collected. For 
big applications this causes OOM memory exceptions very quickly for Meatspace 
exhaustion because the entire class loader of the app is not released.

For testing the HelloWorld app from struts-examples can be used. Deploy the war 
in tomcat as the only web app in the server. For each "reload" (from Tomcat 
manager) or simply copying the war file over the deployed one, taking a memory 
dump (with jmap) and looking at the content with a memory profiler (such as 
Eclipse MAT) shows that there is one ApplicationContext class for each hot 
deploy instead of just one.

 

The problem is present in version 6.7.4-SNAPSHOT of Feb 28th.

 

If the server can be restarted at each deploy the problem is obviously not a 
real problem. However if a tomcat instance contains more than one application 
being able to hot deploy a single one is very useful as it does not force all 
apps down for the server restart.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to