Our app is having frecuent outages so we took a heap dump, because GC was using a lot of CPU, and we find that for the most part, there is a plenty of javax.faces.component.StateHolderSaver instances.
That image is just one session and the arraylist is storing 49953 instances. So, using the path to GC roots, we identified the thread:
http-nio-8080-exec-184 Runnable Thread ID: 805
org.omnifaces.cdi.viewscope.ViewScopeStorageInSession$Proxy$_$$_WeldClientProxy.getBeanStorageId()
org.omnifaces.cdi.viewscope.ViewScopeManager.getBeanStorage(Contextual) ViewScopeManager.java:176
org.omnifaces.cdi.viewscope.ViewScopeManager.getBean(Contextual) ViewScopeManager.java:127
org.omnifaces.cdi.viewscope.ViewScopeManager$Proxy$_$$_WeldClientProxy.getBean(Contextual)
org.omnifaces.cdi.viewscope.ViewScopeContext.get(Contextual) ViewScopeContext.java:67
org.jboss.weld.contexts.PassivatingContextWrapper$AbstractPassivatingContextWrapper.get(Contextual) PassivatingContextWrapper.java:78
org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(Bean, BeanManagerImpl, CreationalContext) ContextualInstanceStrategy.java:95
org.jboss.weld.bean.ContextualInstance.get(Bean, BeanManagerImpl, CreationalContext) ContextualInstance.java:50
org.jboss.weld.manager.BeanManagerImpl.getReference(Bean, Type, CreationalContext, boolean) BeanManagerImpl.java:694
org.jboss.weld.module.web.el.AbstractWeldELResolver.lookup(BeanManagerImpl, ELContext, String) AbstractWeldELResolver.java:107
org.jboss.weld.module.web.el.AbstractWeldELResolver.getValue(ELContext, Object, Object) AbstractWeldELResolver.java:90
org.jboss.weld.environment.servlet.util.ForwardingELResolver.getValue(ELContext, Object, Object) ForwardingELResolver.java:49
javax.el.CompositeELResolver.getValue(ELContext, Object, Object) CompositeELResolver.java:62
com.sun.faces.el.DemuxCompositeELResolver._getValue(int, ELResolver[], ELContext, Object, Object) DemuxCompositeELResolver.java:180
com.sun.faces.el.DemuxCompositeELResolver.getValue(ELContext, Object, Object) DemuxCompositeELResolver.java:208
org.apache.el.parser.AstIdentifier.getValue(EvaluationContext) AstIdentifier.java:94
org.apache.el.parser.AstValue.getValue(EvaluationContext) AstValue.java:137
org.apache.el.ValueExpressionImpl.getValue(ELContext) ValueExpressionImpl.java:184
org.jboss.weld.module.web.el.WeldValueExpression.getValue(ELContext) WeldValueExpression.java:50
com.sun.faces.facelets.el.TagValueExpression.getValue(ELContext) TagValueExpression.java:115
javax.faces.component.ComponentStateHelper.eval(Serializable, Object) ComponentStateHelper.java:200
javax.faces.component.UIComponentBase.isRendered() UIComponentBase.java:470
javax.faces.component.UIComponentBase.processDecodes(FacesContext) UIComponentBase.java:1258 <2 recursive calls>
javax.faces.component.UIForm.processDecodes(FacesContext) UIForm.java:238
com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(VisitContext, UIComponent) PartialViewContextImpl.java:629
com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(UIComponent, VisitCallback) PartialVisitContext.java:183
javax.faces.component.UIForm.visitTree(VisitContext, VisitCallback) UIForm.java:405
javax.faces.component.UIComponent.visitTree(VisitContext, VisitCallback) UIComponent.java:1747 <2 recursive calls>
com.sun.faces.context.PartialViewContextImpl.processComponents(UIComponent, PhaseId, Collection, FacesContext) PartialViewContextImpl.java:423
com.sun.faces.context.PartialViewContextImpl.processPartial(PhaseId) PartialViewContextImpl.java:284
org.primefaces.context.PrimePartialViewContext.processPartial(PhaseId) PrimePartialViewContext.java:65
javax.faces.context.PartialViewContextWrapper.processPartial(PhaseId) PartialViewContextWrapper.java:252
org.omnifaces.context.OmniPartialViewContext.processPartial(PhaseId) OmniPartialViewContext.java:122
javax.faces.component.UIViewRoot.processDecodes(FacesContext) UIViewRoot.java:1030
com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(FacesContext) ApplyRequestValuesPhase.java:79
com.sun.faces.lifecycle.Phase.doPhase(FacesContext, Lifecycle, ListIterator) Phase.java:100
com.sun.faces.lifecycle.LifecycleImpl.execute(FacesContext) LifecycleImpl.java:201
javax.faces.webapp.FacesServlet.service(ServletRequest, ServletResponse) FacesServlet.java:670
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:230
org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
ar.com.dux.jsf.filters.CacheFilter.doFilter(ServletRequest, ServletResponse, FilterChain) CacheFilter.java:27
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
ar.com.dux.jsf.filters.SecurityFilter.doFilter(ServletRequest, ServletResponse, FilterChain) SecurityFilter.java:93
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
org.primefaces.webapp.filter.FileUploadFilter.doFilter(ServletRequest, ServletResponse, FilterChain) FileUploadFilter.java:89
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
org.apache.tomcat.websocket.server.WsFilter.doFilter(ServletRequest, ServletResponse, FilterChain) WsFilter.java:52
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
com.ocpsoft.pretty.PrettyFilter.doFilter(ServletRequest, ServletResponse, FilterChain) PrettyFilter.java:145
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
org.omnifaces.filter.GzipResponseFilter.doFilter(HttpServletRequest, HttpServletResponse, HttpSession, FilterChain) GzipResponseFilter.java:183
org.omnifaces.filter.HttpFilter.doFilter(ServletRequest, ServletResponse, FilterChain) HttpFilter.java:108
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:192
org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) ApplicationFilterChain.java:165
org.apache.catalina.core.StandardWrapperValve.invoke(Request, Response) StandardWrapperValve.java:198
org.apache.catalina.core.StandardContextValve.invoke(Request, Response) StandardContextValve.java:96
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Request, Response) AuthenticatorBase.java:474
org.apache.catalina.core.StandardHostValve.invoke(Request, Response) StandardHostValve.java:140
org.apache.catalina.valves.ErrorReportValve.invoke(Request, Response) ErrorReportValve.java:79
org.apache.catalina.valves.AbstractAccessLogValve.invoke(Request, Response) AbstractAccessLogValve.java:624
org.apache.catalina.core.StandardEngineValve.invoke(Request, Response) StandardEngineValve.java:87
org.apache.catalina.connector.CoyoteAdapter.service(Request, Response) CoyoteAdapter.java:349
org.apache.coyote.http11.Http11Processor.service(SocketWrapperBase) Http11Processor.java:783
org.apache.coyote.AbstractProcessorLight.process(SocketWrapperBase, SocketEvent) AbstractProcessorLight.java:66
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(SocketWrapperBase, SocketEvent) AbstractProtocol.java:798
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun() NioEndpoint.java:1434
org.apache.tomcat.util.net.SocketProcessorBase.run() SocketProcessorBase.java:49
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) ThreadPoolExecutor.java:1149
java.util.concurrent.ThreadPoolExecutor$Worker.run() ThreadPoolExecutor.java:624
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run() TaskThread.java:61
java.lang.Thread.run() Thread.java:748
But I can't relate this to an specific component of the html. ¿How can I identify which is the component causing the issue? ¿Or is more like a general problem of the app?
We are using JSF 2.3, java 8, primefaces 8.0 and tomcat 8.5