2010-12-14 26 views
0

我正在使用Tomcat版本5.0.28,我正在分析堆转储。它显示内存泄漏是由BodyContentImpl对象引起的,看起来(不确定)它缓存了标记之间jsp的内容。 另外我发现这个版本存在一个问题,它不会重置它在内部用来保存数据的缓冲区。可以选择在更高版本的tomcat中限制缓冲区。BodyContentImpl jsp标记内存泄漏问题

我想知道的是,什么BodyContentImpl实际上做,是缓存标签或数据。 它将如何在动态变化的jsp中有用。

+0

的Tomcat 5.0已经很老了...你可以升级吗? – skaffman 2010-12-14 17:56:01

+0

你不明白我的问题,简单的缓冲区在那里做什么 – John 2010-12-17 11:17:46

回答

3

是的,你的JSP标签的东西被缓存。特别是“JSP自定义标记池 - 为JSP自定义标记实例化的Java对象现在可以被合并和重用,这大大提高了使用自定义标记的JSP页面的性能。”

要禁用添加catalina.properties(或CATALINA_OPTS)

org.apache.jasper.runtime.JspFactoryImpl.USE_POOL =假 org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER =真

关闭这个功能(不过,我不知道这是以往任何时候回迁从5.5.X到5.0.x)

见例如Tomcat 5.5 Configuration