似乎UnmappedResourceHandler正在资源文件夹中加载复合组件 xhtml 文件。结果似乎逐渐增加了内存泄漏。
泄漏可以在FaceletViewHandlingStrategy.metadataCache. 它依赖于 hashmap,当使用上述处理程序时,它UnmappedResources被用作CompositeComponentBeanInfo实例的键。
如果UnmappedResourceHandler未使用 ,则密钥包含ResourceImpl. 不同之处在于UnmappedResource它没有equals()按原样ResourceImpl实现:
@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. 在第二个中,一切都按预期工作。
其他人可以确认这个问题吗?