Tomcat 6.0.24 reports the following during shutdown. If possible, ICEfaces 2.0 should not make use of any Threads or ThreadLocal variables, so these should be looked at in detail.
SEVERE: A web application appears to have started a thread named [Session Monitor] but has failed to stop it. This is very likely to create a memory leak.
Feb 3, 2010 10:27:23 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: A web application appears to have started a thread named [Monitor Runner] but has failed to stop it. This is very likely to create a memory leak.
Feb 3, 2010 10:27:23 AM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SEVERE: A web application created a ThreadLocal with key of type [com.icesoft.faces.webapp.http.servlet.MainServlet.CurrentContextPath] (value [com.icesoft.faces.webapp.http.servlet.MainServlet$
CurrentContextPath@6d0d1642]) and a value of type [null] (value [null]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
Make use of timestamps rather than timer threads. If resources need to be cleaned up after a time interval, it is sufficient to either allow the session timeout to handle the cleanup or perform the cleanup on the next available request when the timestamp has been exceeded.