[
https://issues.apache.org/jira/browse/MYFACES-4563?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Volodymyr Siedlecki resolved MYFACES-4563.
------------------------------------------
Fix Version/s: 4.0.0-RC6
Resolution: Fixed
> 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
> Assignee: Volodymyr Siedlecki
> Priority: Major
> Fix For: 4.0.0-RC6
>
> 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|width=348,height=355!
> 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)