【问题标题】:OmniFaces UnmappedResourceHandler seems to leak resources when composite components are usedOmniFaces UnmappedResourceHandler 在使用复合组件时似乎会泄漏资源
【发布时间】:2015-06-03 08:28:28
【问题描述】:

似乎UnmappedResourceHandler 正在资源文件夹中加载复合组件 xhtml 文件。结果似乎逐渐增加了内存泄漏。

可以在FaceletViewHandlingStrategy.metadataCache 中找到泄漏。 它依赖于 hashmap,当使用上述处理程序时,UnmappedResources 被用作 CompositeComponentBeanInfo 实例的键。

如果不使用UnmappedResourceHandler,则密钥包含ResourceImpl。不同之处在于UnmappedResource 不像ResourceImpl 那样实现equals()

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

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

【问题讨论】:

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


    【解决方案1】:

    UnmappedResourceHandler 复合组件上的内存泄漏已得到确认,并已通过 this commit(用于 2.1)、this commit(用于 1.11)和 this commit(用于 1.8.3)解决。

    截至今天,所有版本都在 Maven 中可用。

    【讨论】:

      猜你喜欢
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 2021-09-14
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      相关资源
      最近更新 更多