POJO在jsp中使用后仍保留在内存中
我有基于tomcat的servlet。Servlet有基于注释类的mvc,看起来像(伪代码)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
所有
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>