Tomcat 6提供了一个JSF应用程序,每个会话都可以将viewScoped bean作为托管bean分配到“会话”范围内。问题是,用于存储此bean的内存似乎从未被释放,即使会话在空闲状态中花费了几个小时。
在会话空闲了一定时间(例如,10分钟)之后,有没有办法强迫Tomcat释放这个内存?如果不是,以编程方式手动释放此内存如何?还是“会话”作用域中的“托管bean”的特性之一,无论发生什么,它都会在内存中持续存在,直到服务器关闭?提前感谢!
但是viewScoped bean可能不会被释放。因为如果单击过期页面上的链接,tomcat控制台中的日志显示服务器端的UIViewRoot仍然有效。日志:前期恢复视图1 afterPhase -RESTORE_VIEW 1次:3段前呈现_RESPONSE 6和服务器进程的内存没有稍微减少。如果服务器运行时间相对较长。应用程序的响应是如此缓慢,并且似乎不健壮,例如分页器不能工作,等等。即使在服务器关闭时,控制台也会打印出来:等待16个实例被解除分配
有人知道这件事吗?
发布于 2011-06-29 11:04:33
会话范围内的托管bean不会被释放,因为会话没有超时。您需要在部署描述符文件(web.xml)中指定会话的可接受超时。下面的示例以分钟为单位。10分钟后,会话将失效,您的会话作用域bean应该被销毁。
<session-config>
<session-timeout>10</session-timeout>
</session-config>https://stackoverflow.com/questions/6517424
复制相似问题