POJO在jsp中使用后仍保留在内存中

POJO在jsp中使用后仍保留在内存中,jsp,tomcat,spring-mvc,profiling,profiler,Jsp,Tomcat,Spring Mvc,Profiling,Profiler,我有基于tomcat的servlet。Servlet有基于注释类的mvc,看起来像(伪代码) 所有pojo的都保留在内存中。但是如果我在jsp中打印${POJOLIST}而不使用jstl,当所有的pojo垃圾按照我的意愿收集时jstl的var重新创建对象并将其保存在内存中 如果使用@SessionAttribute或手动管理会话,“Object命令”将保留在会话中。因此,一旦您使用完控制器,您需要告诉控制器您的操作已经完成,会话变量不再有用,可以清理了: @RequestMapping("/my

我有基于tomcat的servlet。Servlet有基于注释类的mvc,看起来像(伪代码)


所有
pojo的
都保留在内存中。但是如果我在
jsp
中打印
${POJOLIST}
而不使用
jstl
,当所有的pojo垃圾按照我的意愿收集时
jstl
var
重新创建对象并将其保存在内存中

如果使用@SessionAttribute或手动管理会话,“Object命令”将保留在会话中。因此,一旦您使用完控制器,您需要告诉控制器您的操作已经完成,会话变量不再有用,可以清理了:

@RequestMapping("/myAction")
public String getAction(Model m, SessionStatus status) {
     ....
     m.put("list",list); 
     status.setComplete(); //tells the controller you're done with your actions and will clean all sessions variables
     return view;
}

这是我在分析应用程序时遇到的问题。事实证明,由于默认情况下web.xml jsp servlet中启用了
enablePooling
,因此不会像您预期的那样释放对象。唯一的解决方案是关闭启用池。看看这两个被提出的错误


我最近也遇到了同样的问题。 我用谷歌搜索解决这个问题已经很久了。。 最后,我在
$TOMCAT\u HOME/conf/web.xml
中将
enablePooling
设置为
false
,从而解决了这个问题。 (参数的默认值为true。)


使能池
假的

这个问题有什么进展吗?我们也在经历它。
    <c:forEach items=${POJOLIST} var="pojo"></c:forEach>
@RequestMapping("/myAction")
public String getAction(Model m, SessionStatus status) {
     ....
     m.put("list",list); 
     status.setComplete(); //tells the controller you're done with your actions and will clean all sessions variables
     return view;
}
<init-param>
    <param-name>enablePooling</param-name>
    <param-value>false</param-value>
</init-param>