我正在使用Tomcat版本5.0.28,我正在分析堆转储。它显示内存泄漏是由于BodyContentImpl对象,它似乎(不确定)它缓存标记之间的jsp内容。 此外,我发现该版本存在问题,它不会重置其内部用于保存数据的缓冲区。在更高版本的tomcat中可以选择限制缓冲区。
我想知道的是,BodyContentImpl实际上做了什么,是否缓存了标签或数据。 它如何在动态变化的jsp中发挥作用。
答案 0 :(得分:4)
是的,您的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)