避免由于调用getServletContext()。setAttribute(“ SOME_MAP”,map)导致的内存泄漏

时间:2018-12-17 19:07:37

标签: servlets java-ee servletcontextlistener

根据this source,这是内存泄漏的示例:

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

在Web应用程序中,某些对象存储应用范围中   直到应用程序被明确停止或删除:

我不明白这是什么意思:“应用程序已已停止或已删除”-如果将Web应用程序部署在Tomcat上,我希望永远都不要停止它(因此它可以“永久”访问客户使用http)。那么这意味着重新部署吗?

更重要的是,我无法理解如何避免此类内存泄漏。我知道removeAttribute()的{​​{1}}方法,但是我无法想象在哪个代码位置调用它。

假设在启动应用程序时(在ServletContextListener类中)设置setAttribute(),然后在JSP页面中访问该属性。

不幸的是,我对“对象存储在应用程序范围中”中的应用程序范围一词也不太清楚。它不是在运行Tomcat的同一个JVM中吗?

0 个答案:

没有答案