我们在Tomcat 7中运行的struts2 Web应用程序间歇性地遇到同样的问题:
我已经将Tomcat配置为在OutOfMemory上创建自动堆转储,当我在Eclipse中使用jmap或MAT分析转储时,每个转储都显示相同的内容。所有内存都占用了近一百万个java.util.LinkedList $ Node,它们似乎是由PageOutputStream生成的。
由于这些节点似乎是由PageOutputStream生成的,这是Struts中页面呈现的一部分,我的想法是在我们的一个JSP页面中有一个无限循环的Struts标签,它们正在创建所有这些链接列表节点,但我正在努力了解我如何找出该页面可能是什么。
我想知道是否有人知道一种方法可以将这个问题进一步分解为一行代码或一个jsp页面?
答案 0 :(得分:0)
我最终发现问题是JSP中的Struts标记被破坏了。我在控制器中检索一组结果,并使用<s:iterator>
这些搜索结果包括一些嵌入式HTML,它创建了一个更长的迭代,而不是无限但足够长以快速消耗内存。一旦我修复了嵌入式HTML,问题就消失了。