[jboss-jira] [JBoss JIRA] (AS7-3733) AWT AppContext / EventQueue ClassLoader Memory Leaks

Philippe Guinot (JIRA) jira-events at lists.jboss.org
Tue Feb 14 11:16:01 EST 2012


    [ https://issues.jboss.org/browse/AS7-3733?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12666425#comment-12666425 ] 

Philippe Guinot commented on AS7-3733:
--------------------------------------

Thank you.

I don't mind creating my own listener after all, because I may need to init other things at startup.

However, with this listener added in jboss-web.xml
   <listener>
      <class-name>mypackage.MemoryLeakPreventionListener</class-name>
      <listener-type>LIFECYCLE</listener-type>
   </listener>
It is actually called only since the 'after-deploy' event. Maybe I haven't declared it in the right place... Where is that jboss-web.xml supposed to be ?
                
> AWT AppContext / EventQueue ClassLoader Memory Leaks
> ----------------------------------------------------
>
>                 Key: AS7-3733
>                 URL: https://issues.jboss.org/browse/AS7-3733
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: Web
>    Affects Versions: 7.1.0.CR1b
>         Environment: AS 7 running on JDK 1.6.0_30, Windows 7
>            Reporter: Philippe Guinot
>            Assignee: Remy Maucherat
>              Labels: appcontext, as7, awt, classloader, eventqueue, jboss, leak
>
> The use of libraries using awt components creates ClassLoader Memory Leaks. This is because the first call to the sun AppContext class makes a static reference to the current class loader.
> Same thing goes with the creation of the AWT Event Queue, as an example the use of the class java.awt.Color makes a static init call to java.awt.Toolkit which creates an AWT EventQueue despite the headless mode. The EventQueue also keep a reference to the current context with the class loader.
> The current work around I've found is to add a call to:
> {code}java.awt.Toolkit.getDefaultToolkit();{code}
> before the application gets loaded.
> This causes the EventQueue to be created and the AppContext to be initialized. 
> Then, as the AWT static references are final, I get rid of this issue for the rest of the server lifecycle.
> I put this code in org.jboss.as.server.Main, just after line 91. However a proper solution would be to use org.apache.catalina.core.JreMemoryLeakPreventionListener which is present in the JBoss Web jar but not used... (cf. https://community.jboss.org/thread/164760 ) However the Tomcat code deals only with the AppContext, not the EventQueue!

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list