我有一个由Tomcat 6提供服务的JSF应用程序,并且每个会话都可以在“会话”作用域中将它分配给它的viewScoped bean作为托管bean。问题在于用来存储这个bean的内存似乎并没有被释放,即使在会话在空闲状态下花费了数小时之后。即使会话无效,管理的bean也不会被释放
有没有什么方法可以强制Tomcat在会话空闲一段时间(例如说10分钟)之后释放此内存?如果没有,如何通过编程方式手动释放此内存?或者是“会话”作用域中“托管bean”的特性之一,它将在服务器关闭之前一直存储在内存中,不管是什么? 在此先感谢!
但viewScoped bean可能不会被释放。因为如果点击过期页面上的链接,tomcat控制台中的日志显示服务器端的UIViewRoot仍然存在。日志: beforePhase-RESTORE_VIEW 1周 afterPhase -RESTORE_VIEW 1周时间:3 beforePhase-RENDER_RESPONSE 6 而服务器进程的内存并没有下降一点点。如果服务器运行时间较长。应用程序的响应如此缓慢,似乎不健壮,如分页程序不起作用等等。 即使在服务器关闭时,控制台打印输出: 等待16例(县)被释放
是否有任何人知道这件事吗?
这不是JSF/PrimeFaces的责任。这是GC的责任。运行一个分析器。 – BalusC