Согласно этому источнику , это пример утечки памяти:
getServletContext().setAttribute("ATTR_NAME", map);
в веб-приложениях, некоторые объекты хранятся в область приложения до тех пор, пока приложение не будет явно остановлено или удалено:
Я не понимаю, что это значит "приложение остановлено или удалено"- если я разверну свое веб-приложение на Tomcat, я ожидаю, что никогда его не остановлю (так что оно" вечно "доступно через http для клиентов).Так значит ли это повторное развертывание?
И что более важно, я не могу понять, как избежать таких утечек памяти.Я знаю о removeAttribute()
методе ServletContext
, но я не могу представить, в каком месте кода его вызывать.
Скажем, я установил setAttribute () при запуске моего приложения (в моем классе ServletContextListener), затем я получаю доступ к атрибуту на моих страницах JSP.
К сожалению, я также не на 100% ясно понимаю термин область применения в "объектах, хранящихся в области приложения".Разве это не внутри той же JVM, где работает Tomcat?