似乎UnmappedResourceHandler
正在加载资源文件夹中的复合组件xhtml文件。结果似乎是内存泄漏逐渐增加。
泄漏可以在FaceletViewHandlingStrategy.metadataCache
内找到。
它依赖于hashmap,当使用上面的handler时,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
。在第二部分,一切都按预期工作。
其他人可以确认这个问题吗?
答案 0 :(得分:1)
UnmappedResourceHandler
内存泄漏已得到确认,this commit为2.1,this commit为1.11,this commit为1.8.3。
所有版本均已在Maven中提供。