Hi,
during weekend we have been investigating some rather big memory leaks we have in current WildFly code.
What our research has found out is that we had problems in
- JPA integration
- Validation integration
- undertow / undertow integration
- msc
- resteasy
- hibernate
I am not sure for RestEasy fixes and should code be properly fixed by people that know code bit better.
All this components need new release to be cut before they can be included into WildFly.
I am not sure if this will hold WildFly Alpha 3 release or not, IMHO it should.
Also beyond this leaks we also found that we leak somewhere deep in hibernate integration and properties(or better copy of them) that are passed as part of JPA initialization remain referenced by hibernate service loader after application has already been undeployed.
This is problematic as part of this properties are instances of BeanManager and ValidatorFactory and similar if they would be just primitive values it would be lesser of issue.
I was unable to find proper place to fix this. So I would like to ask
people that are more familiar with that area to take a look.
This is GC root from Yourkit profile session:
Paths from "GC Roots" to "Object SerializableValidatorFactory #323736"
+-------------------------------------------------------------------------------------------------------+-----------------+----------------+
| Name | Retained Size | Shallow Size |
+-------------------------------------------------------------------------------------------------------+-----------------+----------------+
| +---org.jboss.as.jpa.validator.SerializableValidatorFactory | 16 | 16 |
| | | | |
| +---value of java.util.HashMap$Entry | 64 | 24 |
| | | | |
| +---[83] of java.util.HashMap$Entry[256] | 4.088 | 1.040 |
| | | | |
| +---table of java.util.HashMap | 4.152 | 48 |
| | | | |
| +---configurationValues of org.hibernate.boot.registry.internal.StandardServiceRegistryImpl | 15.688 | 24 |
| | | | |
| +---serviceRegistry of org.jboss.as.jpa.hibernate4.JBossAppServerJtaPlatform | 15.776 | 40 |
| | | | |
| +---delegate of org.jboss.as.jpa.hibernate4.DefaultJtaPlatform | 16.128 | 352 |
| | | | |
| +---[7] of java.lang.Object[2560] | 258.520 | 10.256 |
| | | | |
| +---elementData of java.util.Vector | 258.544 | 24 |
| | | | |
| +---classes of org.jboss.modules.ModuleClassLoader | 518.696 | 80 |
| | | | |
| +---referent of java.util.WeakHashMap$Entry | 248 | 40 |
| | | | |
| +---next of java.util.WeakHashMap$Entry | 976 | 40 |
| | | | |
| +---[29] of java.util.WeakHashMap$Entry[32] | 9.720 | 144 |
| | | | |
| +---table of java.util.WeakHashMap | 9.808 | 56 |
| | | | |
| +---loaderToCache of java.lang.reflect.Proxy [Class] | 14.864 | 344 |
+-------------------------------------------------------------------------------------------------------+-----------------+----------------+
I would also like to encgurage everyone else to profile their part of code just to make sure we haven't missed anything.
--
tomaz