我的网络应用程序正在发生内存泄漏。(我使用visualVM监控了webapp)
每次,我都会继续使用ViewScope注释bean的特定jsf页面,堆增加。使用viewScope,当我离开页面时,应清除所有对象(和内存)。 即使我关闭会话,堆仍然保持在同一级别,然后再次增加,如果我继续这个jsf页...
显然应用程序会崩溃...... 会话是否关闭不好(是否应该“杀死”所有对象)?或者对象引用是否仍然存在并且垃圾收集器不能完成这项工作?
答案 0 :(得分:0)
查看生命周期管理是特定于JSF实现的。 MyFaces和Mojarra实现了一个队列 - 当它被填满时,然后在下一次创建一个新视图时,将删除一个旧视图。如果我没有弄错的话,最近最少使用的那个。有关其他详细信息,请参阅BalusC's answer。
您无法可靠地检测到用户已离开该页面。您可以在使用js导入事件之前听取窗口,但它不会完美地工作。我知道ICEfaces 1.8.2可以做到这一点。
当会话被破坏时,其所有视图也会被销毁。
您的期望存在一些问题。