We recently migrate an application from Jboss EAP 6.1 to 7.1. Our application randomly start to go into a full GC death spiral (avg time 12s stop-the-world) and running out of memory in production environment.
From Jboss EAP 6.1 to 7.1 we migrate
- Java from 7 to 8
- JSF from 2.1(2.1.28.redhat-3) to 2.2(2.2.13.SP4-redhat-1)
- Hibernate from 4 to 5
We also have:
- Primefaces 6.1
- Primefaces Extension 6.1.1 (massive use of DynaForm)
The application works fine in Jboss EAP 6 with PF 6.1 and PFE 6.1.1.
Before JBoss dead we make some heap dump and notice that there are a thread that occupy 3.28 GB in retained heap. 3.27 GB are a java.util.HashMap which each node contains millions of
javax.faces.component.StateHolderSaver
We already read this https://github.com/primefaces/primefaces/issues/4849 that seems similar to our issue but we don't have the component p:autoUpdate that cause the issue.
UPDATE 1
I notice that in local environment with downgrade to JSF 2.1 (custom module to JBoss) the number of javax.faces.component.StateHolderSaver doesn't icrease exponentially. What change from the two version?
What can cause this memory leak?
Thanks for the help.