我们正在努力摆脱PageContextImpl
和PerThreadTagHandlerPool$PerThreadData
人口过多导致的内存不足错误。
Memory Analyzer说主要嫌疑人是PageContextImpl
:
由“org.jboss.modules.ModuleClassLoader @ 0x640015838”加载的“org.apache.jasper.runtime.PageContextImpl”的12,874个实例占用922,562,624(21.53%)个字节。
进一步调查显示PageContextImpl
个实例是从javax.servlet.jsp.tagext.TagSupport
(来自jboss-javaee-all-6.0-3.0.3.Final.jar
)引用的。
GetTag
类扩展了javax.servlet.jsp.tagext.TagSupport
,其中包含字段
private Tag parent;
private Hashtable<String, Object> values;
protected String id;
protected PageContext pageContext;
阅读这样的文章:
我怀疑我们在自定义标记生命周期中存在误解或错误的问题,但是我无法找到根本原因。也许答案在其中一篇文章中,但似乎没有一篇文章描述未发布的PageContext
个实例。
顺便说一下,我们记忆中的PerThreadTagHandlerPool$PerThreadData
人口也非常多,完全像已经提到的Memory Leak using custom JSP tags on JBoss as7中描述的那样:
我知道我们可能只是禁用了标记池,但我想首先找到根本原因。
问题:
PageContext
的引用?