如何通过简单地关闭浏览器来清除退出应用程序时的弹簧webflow范围数据?

时间:2014-12-09 14:55:40

标签: spring spring-webflow

详情: -

  1. 使用Spring webflow 2.1.1和Spring核心框架开发应用程序。
  2. Spring webflow充当应用程序的MVC控制器
  3. 应用程序将大量数据存储在spring webflow流量变量中,这些变量使用jsf richfaces在UI上呈现。
  4. 对于web.xml中的相同应用程序,会话超时配置为120分钟。
  5. 问题是当浏览器在webflow之间关闭或者http会话超时时,spring webflow流程中存储的数据会发生什么?观察到在两种情况下都没有调用结束状态。该数据是否驻留在Java堆上?

    此外,根据内存分析器工具,webAppServletContext将消耗70%的堆。

    目前,即使将堆增加到3GB,应用程序也会出现内存不足问题。

1 个答案:

答案 0 :(得分:0)

Spring WebFlow使用HttpSession存储其所有上下文信息。只要Servlet容器无效/销毁用户关联的HttpSession,所有Spring WebFlow存储的变量也会被破坏(好吧,可以被垃圾收集)。

如果您遇到内存问题,请检查您的Servlet容器设置。有些机制有周期性工作来清理过期的HttpSession,其他一些机制可以在无效请求时清理等等......

无论如何,由于所描述的机制,你不太可能达到OutOfMemoryError,因为它会显示有缺陷的Servlet实现。