【发布时间】:2015-06-03 08:28:28
【问题描述】:
似乎UnmappedResourceHandler 正在资源文件夹中加载复合组件 xhtml 文件。结果似乎逐渐增加了内存泄漏。
可以在FaceletViewHandlingStrategy.metadataCache 中找到泄漏。
它依赖于 hashmap,当使用上述处理程序时,UnmappedResources 被用作 CompositeComponentBeanInfo 实例的键。
如果不使用UnmappedResourceHandler,则密钥包含ResourceImpl。不同之处在于UnmappedResource 不像ResourceImpl 那样实现equals():
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
ResourceImpl resource = (ResourceImpl) o;
return resourceInfo.equals(resource.resourceInfo);
}
所以问题似乎在第一种情况下CompositeComponentBeanInfo被一次又一次地添加到metadataCache。在第二个中,一切都按预期工作。
其他人可以确认这个问题吗?
【问题讨论】:
标签: jsf-2 memory-leaks composite-component omnifaces unmappedresourcehandler