[ 
https://issues.apache.org/jira/browse/CXF-6749?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15105727#comment-15105727
 ] 

Daniel Kulp commented on CXF-6749:
----------------------------------


There really isn't a way to completely avoid having the shutdown hook, even 
using Java7's deleteOnExit stuff for directories, without causing a different 
memory leak.     I've added a method to FileUtils to check if the temp dir is 
empty and remove the directory and hook if it is.   I've updated the Servlet to 
call that method on destroy.   For MOST cases, that should solve this.   If 
something is holding onto one of the temp files such that it hasn't been 
deleted, it WILL attempt to gc()/runFinalizers() to get it released and 
re-check, but if that doesn't cause the files to delete, it will leave the hook 
in place.  

For non-servlet uses of CXF, they can call the same method on FileUtils during 
whatever application cleanups they do. (FileUtils.maybeDeleteDefaultTempDir())
 



> Classloader leak on FileUtils.createTmpDir()
> --------------------------------------------
>
>                 Key: CXF-6749
>                 URL: https://issues.apache.org/jira/browse/CXF-6749
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.7.14
>         Environment: Slackware Linux 14.1 (kernel 3.10.17), Java 1.7.0_75, 
> Tomcat 7.0.39 (this is my production environment)
>            Reporter: Diogo Sant'Ana
>              Labels: classloader-leak
>
> FileUtils.createTmpDir() adds a ApplicationShutdownHook to remove the 
> recently created temp folder, creating a indirect reference to the Tomcat 
> WebappClassloader from the hook static attribute at ApplicationShutdownHooks 
> class, preventing the classloader to be collected.
> Actually, it will be collected when the JVM is turned off. But this is a web 
> application container, it won't be turn off for a while.
> I only checked this with the version I´m currently using (2.7.14), but I 
> checked the code at 3.1.x and master branches and it still the same.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to