有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

web应用中的Java内存管理

我们有一个web应用程序,它正在从JSP执行查询,并将结果集以ArrayList<TreeMap<ColumnName, Value(String)>>的形式存储到集合中。它在应用程序中没有分页。当用户搜索更多记录时,加载页面所需的时间会更长。如果多个用户执行相同类型的搜索,则会出现内存不足错误。当我们检查检索数据的时间时,使用结果集形成收集对象所需的时间较短,对于50k条记录约为10秒。但要将数据呈现到页面中,需要花费大约5分钟的时间。有时会进入无反应阶段

这里我的问题是,何时释放用于存储结果集数据的收集对象来执行垃圾收集。是在页面完成数据的页面呈现之后吗?如果没有,那么什么时候才能被释放


共 (1) 个答案

  1. # 1 楼答案

    我的问题是,何时释放用于存储结果集数据的收集对象来执行垃圾收集。是在页面完成数据的页面读取之后吗?如果没有,那什么时候才能获释

    一旦响应被提交,日期结构就开始符合GC的条件。作为从servlet提交响应的一部分,JSP迭代集合并将其呈现为HTML响应。当响应提交完成时(从相应的JSP呈现HTML),它就可以用于垃圾收集当它将被释放时,只有GC知道,但在从JSP呈现HTML后,它将变得合格(作为响应提交的一部分

    我假设来自SQL查询执行的结果集没有被其他任何地方引用。如果是这样,则必须显式地将其设置为null,以告诉JVM它有资格进行垃圾收集