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)