2

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

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

4

1 回答 1

1

UnmappedResourceHandler复合组件上的内存泄漏已确认并已通过此提交2.1、此提交1.11 和此提交1.8.3 解决。

到目前为止,所有版本都在 Maven 中可用。

于 2015-06-03T11:45:33.403 回答