2010-12-14 124 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