似乎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
. 在第二个中,一切都按预期工作。
其他人可以确认这个问题吗?