2

Кажется UnmappedResourceHandler загружает составные компоненты xhtml-файлов в папку ресурсов. В результате получается постепенное увеличение утечки памяти.OmniFaces UnmappedResourceHandler, кажется, утечка ресурсов при использовании составных компонентов

Утечка можно найти в пределах FaceletViewHandlingStrategy.metadataCache. Он полагается на хэш-карту, и когда используется вышеописанный обработчик 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

UnmappedResourceHandler утечка памяти композитных компонентов подтверждается и была решена this commit для 2.1, для this commit 1.11 и this commit для 1.8.3.

Все версии на сегодняшний день доступны в Maven.