[ https://issues.apache.org/jira/browse/LOG4J2-2167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16306669#comment-16306669 ]
Ralph Goers commented on LOG4J2-2167: ------------------------------------- You don't how log4j-web as a dependency. Are you manually shutting down Log4j yourself? > Memory leak in Apache Tomcat/8.5.24 > ----------------------------------- > > Key: LOG4J2-2167 > URL: https://issues.apache.org/jira/browse/LOG4J2-2167 > Project: Log4j 2 > Issue Type: Bug > Components: Web/Servlet > Affects Versions: 2.10.0 > Environment: OS (on AWS): ubuntu-xenial-16.04-amd64-server-20171121.1 > (ami-fcc4db98) > Server version: Apache Tomcat/8.5.24 > Server built: Nov 27 2017 13:05:30 UTC > Server number: 8.5.24.0 > JVM Version: 1.8.0_151-b12 > JVM Vendor: Oracle Corporation > Reporter: Christian Salway > > I'm introducing log4j2 as the logger into my application and when I do that, > on a reload, undeploy or stop of the Application, a memory leak is left, > which only happens once I introduce the logger into the code. > {noformat} > The following web applications were stopped (reloaded, undeployed), but their > classes from previous runs are still loaded in memory, thus causing a memory > leak (use a profiler to confirm): > /myapp > {noformat} > My log4j2.xml: > {code:xml} > <?xml version="1.0" encoding="UTF-8"?> > <Configuration status="trace"> > <Appenders> > <Console name="Console"> > <PatternLayout pattern="%d %p [%c] %m%n" /> > </Console> > <File name="File" bufferedIO="true" > fileName="${env:CATALINA_BASE}/logs/app-${date:yyyy-mm-dd}.log"> > <PatternLayout pattern="%d %p %m%n" /> > </File> > </Appenders> > <Loggers> > <Root level="all" includeLocation="false"> > <AppenderRef ref="Console" /> > <AppenderRef ref="File" /> > </Root> > </Loggers> > </Configuration> > {code} > My dependencies in pom.xml: > {code:xml} > <dependency> > <groupId>org.apache.logging.log4j</groupId> > <artifactId>log4j-api</artifactId> > <version>2.10.0</version> > </dependency> > <dependency> > <groupId>org.apache.logging.log4j</groupId> > <artifactId>log4j-core</artifactId> > <version>2.10.0</version> > </dependency> > {code} > My WebServlet: > {code:java} > import org.apache.logging.log4j.Logger; > import org.apache.logging.log4j.LogManager; > import javax.servlet.ServletException; > import javax.servlet.annotation.WebServlet; > import javax.servlet.http.HttpServlet; > import javax.servlet.http.HttpServletRequest; > import javax.servlet.http.HttpServletResponse; > import java.io.IOException; > import java.io.PrintWriter; > @WebServlet(name = "Servlet", urlPatterns = {"/servlet"}, loadOnStartup = 1) > public class Servlet extends HttpServlet { > private final Logger logger = LogManager.getLogger(Servlet.class); > protected void doGet(HttpServletRequest request, HttpServletResponse > response) throws ServletException, IOException { > logger.info("doGet"); > PrintWriter out = response.getWriter(); > out.print("Servlet loaded"); > out.flush(); > out.close(); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)