Я пишу веб-приложение, используя Amazon Web Services AWS Java SDK.Apache commons HttpClient версии 3 используется за кулисами.У меня есть commons-httpclient-3.0.1.jar.
В моем catalina.out
SEVERE: The web application [/MyAppName] appears to have started a thread named
[MultiThreadedHttpConnectionManager cleanup] but has failed to stop it. This is
very likely to create a memory leak.
у меня есть следующее предупреждение, поэтому я написал ServletContextListener с помощью метода contextDestroyed ():
MultiThreadedHttpConnectionManager.shutdownAll();
Тем не менее, предупреждение все еще отображается, несмотря на то, что метод был вызван.Что еще я должен сделать для обеспечения очистки?
EDIT : я хотел быть абсолютно уверен, что contextDestroyed () действительно вызывался (по предложению nos), поэтому я установил точку останова наПервое утверждение метода, остановка сервера и попадание в точку останова Я выполнил метод шаг за шагом, чтобы убедиться, что исключения не вызываются, и каждая строка метода была выполнена без проблем.Вот мой исходный код:
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("contextDestroyed() start");
MyMemCache.shutDown();
MultiThreadedHttpConnectionManager.shutdownAll();
ClassLoader contextClassLoader=Thread.currentThread().getContextClassLoader();
LogFactory.release(contextClassLoader);
java.beans.Introspector.flushCaches();
System.out.println("contextDestroyed() end");
}
При горячей замене:
INFO: Reloading Context with name [/MyAppName] has started
contextDestroyed() start
contextDestroyed() end
05 24, 11 3:11:00 PM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/MyAppName] appears to have started a thread
named [MultiThreadedHttpConnectionManager cleanup] but has failed to
stop it. This is very likely to create a memory leak.