[
https://jira.jboss.org/jira/browse/JBCOMMON-50?page=com.atlassian.jira.pl...
]
Craig Raw commented on JBCOMMON-50:
-----------------------------------
Hi Brian - Yes, it's the classloader leak described in JBAS-5300. Would be great to
see this fixed in 5.1.0 - thanks.
TimedCachePolicy leaks classloader to timer thread
--------------------------------------------------
Key: JBCOMMON-50
URL:
https://jira.jboss.org/jira/browse/JBCOMMON-50
Project: JBoss Common
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: common-core (2.x)
Affects Versions: 2.2.4.GA, 2.2.5.beta1
Reporter: Brian Stansberry
Assignee: Brian Stansberry
Fix For: 2.2.10.GA
Attachments: JBCOMMON-50.patch
TimedCachePolicy has a static reference to a Timer, restartTimer. A timer creates a new
thread when it is initialized; the thread inherits its TCCL from the TCCL of the thread
that initializes it. Effect is that TCCL leaks to the restartTimer's thread.
Not sure the best solution here, since common-core is a general use library. In general I
think the right solution is to set the TCCL to a "safe" classloader before
creating the Timer, and restore the TCCL afterwards. But what is a "safe"
classloader? If you use TimedCachePolicy.class.getClassLoader(), then that classloader is
leaked. That's fine in JBoss AS, but may be bad in other use cases. Perhaps null or
system classloader is the right choice; I don't know enough about how this class is
used to have a good idea if the TimerTasks being used (seems to only be RestartTimer) need
to load classes.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira