[
https://issues.apache.org/jira/browse/WICKET-625?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12537603
]
Johan Compagner commented on WICKET-625:
----------------------------------------
> why would this keep the WebAppClassLoader from being garbage collected? Is
> this an implementation detail of the Sun VM or am I missing something? I
> don't see where the reference is leaked outside the context of the
> WebAppClassLoader.
i also don't see that directly, but what could be is that that you give classes
that are loaded by the webappclassloader to classes that are from the servlet
container itself for example if you have a logging.jar in the server/shared
lib. And you give classes of the webapp (not shared) to the logging classes and
they keep references then there is a problem.
> Wicket doesn't clean up properly when hot-deploying; hangs onto Class
> references.
> ---------------------------------------------------------------------------------
>
> Key: WICKET-625
> URL: https://issues.apache.org/jira/browse/WICKET-625
> Project: Wicket
> Issue Type: Bug
> Components: wicket, wicket-extensions, wicket-spring
> Affects Versions: 1.3.0-beta1
> Reporter: Alastair Maw
> Assignee: Alastair Maw
> Fix For: 1.3.0-beta5
>
> Attachments: WICKET-625.patch
>
>
> When you undeploy a webapp, ideally it should go away and its
> WebAppClassLoader should be garbage collected. There are various reasons this
> won't happen, but they essentially split into two problems:
> 1) The App Server has references to classes in the WebAppClassLoader in its
> own objects (on Tomcat these are typically commons logging statics in
> StandardContext in catalina, or some of the jakarta code). There's not much
> you can do about this, short of getting a better app server.
> 2) You hold references to Class objects loaded by your WebAppClassLoader in
> static fields in other Classes loaded by your WebAppClassLoader.
> Number 2 can be solved by the use of WeakReferences to the Class objects.
> Note that you also need to be careful about classes that have Class
> references internally, such as java.lang.reflect.Method and Field. You can
> also hold these items in a WeakReference, but they have the potential to be
> garbage collected randomly, unlike the underlying Class objects.
> I have some patches that allow me to start up and shut down a Spring-backed
> Wicket-based app and have the classloader cope properly. They could probably
> do with some review.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.