Предотвращение утечки памяти, вызванной вызовом getServletContext (). SetAttribute ("SOME_MAP", map) - PullRequest
0 голосов
/ 17 декабря 2018

Согласно этому источнику , это пример утечки памяти:

getServletContext().setAttribute("ATTR_NAME", map);

в веб-приложениях, некоторые объекты хранятся в область приложения до тех пор, пока приложение не будет явно остановлено или удалено:

Я не понимаю, что это значит "приложение остановлено или удалено"- если я разверну свое веб-приложение на Tomcat, я ожидаю, что никогда его не остановлю (так что оно" вечно "доступно через http для клиентов).Так значит ли это повторное развертывание?

И что более важно, я не могу понять, как избежать таких утечек памяти.Я знаю о removeAttribute() методе ServletContext, но я не могу представить, в каком месте кода его вызывать.

Скажем, я установил setAttribute () при запуске моего приложения (в моем классе ServletContextListener), затем я получаю доступ к атрибуту на моих страницах JSP.

К сожалению, я также не на 100% ясно понимаю термин область применения в "объектах, хранящихся в области приложения".Разве это не внутри той же JVM, где работает Tomcat?

...