Volodymyr Siedlecki created MYFACES-4563:
--------------------------------------------
Summary: ViewScope Memory Leak When Trace Enabled
Key: MYFACES-4563
URL: https://issues.apache.org/jira/browse/MYFACES-4563
Project: MyFaces Core
Issue Type: Bug
Affects Versions: 4.0.0-RC4
Reporter: Volodymyr Siedlecki
Attachments: image-2023-02-15-10-13-40-814.png
I noticed a memory leak occurs when the myfaces trace is specified.
!image-2023-02-15-10-13-40-814.png!
After the map is cleared (i.e view changes), I see a new contextual storage
created during the debug logging, but never removed.
{noformat}
ContextualStorage.<init>(BeanManager,boolean)
(org/apache/myfaces/cdi/util/ContextualStorage.java:58)
ViewScopeContextualStorage.<init>(BeanManager)
(org/apache/myfaces/cdi/view/ViewScopeContextualStorage.java:36)
ViewScopeContextualStorageHolder.newContextualStorage(String)
(org/apache/myfaces/cdi/view/ViewScopeContextualStorageHolder.java:59)
ViewScopeContextualStorageHolder.newContextualStorage(String)
(org/apache/myfaces/cdi/view/ViewScopeContextualStorageHolder.java:32)
AbstractContextualStorageHolder.getContextualStorage(String,boolean)
(org/apache/myfaces/cdi/util/AbstractContextualStorageHolder.java:111)
AbstractContextualStorageHolder.getContextualStorage(String)
(org/apache/myfaces/cdi/util/AbstractContextualStorageHolder.java:93)
ViewScopeContextualStorageHolder$Proxy$_$$_WeldClientProxy.getContextualStorage(String)
(Unknown Source:-1)
ViewScopeCDIMap.getStorage()
(org/apache/myfaces/cdi/view/ViewScopeCDIMap.java:60)
ViewScopeCDIMap.getCreationalContextInstances()
(org/apache/myfaces/cdi/view/ViewScopeCDIMap.java:67)
ViewScopeCDIMap.entrySet()
(org/apache/myfaces/cdi/view/ViewScopeCDIMap.java:181)
ViewScopeProxyMap.entrySet()
(org/apache/myfaces/view/ViewScopeProxyMap.java:169)
AbstractMap.toString() (/java.base/java.util/AbstractMap.class:544)
DebugUtils.printAttribute(PrintStream,String,Object)
(org/apache/myfaces/util/DebugUtils.java:373)
DebugUtils.printComponent(UIComponent,PrintStream,int,boolean,String)
(org/apache/myfaces/util/DebugUtils.java:226)
DebugUtils.printView(UIViewRoot,PrintStream)
(org/apache/myfaces/util/DebugUtils.java:147)
DebugUtils.traceView(String,UIViewRoot)
(org/apache/myfaces/util/DebugUtils.java:139)
DebugUtils.traceView(String) (org/apache/myfaces/util/DebugUtils.java:119)
LifecycleImpl.render(FacesContext)
(org/apache/myfaces/lifecycle/LifecycleImpl.java:266)
FacesServlet.service(ServletRequest,ServletResponse)
(/myfaces-api-4.0.0-RC5-SNAPSHOT.jar/jakarta.faces.webapp/FacesServlet.class:225)
ServletWrapper.service(ServletRequest,ServletResponse,WebAppServletInvocationEvent)
(Unknown Source:1260){noformat}
This problem only occurs when the trace is specified. The DebugUtils tries to
print out the ViewMap and a new storage is created during this process.
Is seems like there are two ViewMap (ViewScopeCDIMap) used since the storage
for the cleared view is marked as deactivated and this other one created a new
storage object?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)