使用复合组件时,OmniFaces UnmappedResourceHandler似乎泄漏资源

时间:2015-06-03 08:28:29

标签: jsf-2 memory-leaks composite-component omnifaces unmappedresourcehandler

似乎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。在第二部分,一切都按预期工作。

其他人可以确认这个问题吗?

1 个答案:

答案 0 :(得分:1)

复合组件上的

UnmappedResourceHandler内存泄漏已得到确认,this commit为2.1,this commit为1.11,this commit为1.8.3。

所有版本均已在Maven中提供。