[wildfly-dev] Memory leaks

Scott Marlow smarlow at redhat.com
Tue Jul 16 18:48:12 EDT 2013


Do we want a temporary workaround for the JPA leak?  I have a temp 
workaround that I could create a pr for.

On 07/15/2013 11:24 AM, Scott Marlow wrote:
> WFLY-1697 is for the JPA memory leak.  Thanks for finding the leaks!
>
> Scott
> On 07/15/2013 11:03 AM, Tomaž Cerar wrote:
>> 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
>>
>> For now we have fixed most of the issues in integration code which can
>> be found at
>> https://github.com/ctomc/wildfly/commits/mem-leak
>>
>> undertow
>> https://github.com/undertow-io/undertow/commits/master
>>
>> msc
>> https://github.com/jbossas/jboss-msc/commit/1bcdbd0d874a5d5e22ef2a00fa1ebb7bb570aaf4
>>
>> RestEasy
>> https://github.com/resteasy/Resteasy/pull/344
>>
>> 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 was testing with
>> http://www.jboss.org/jdf/quickstarts/jboss-as-quickstart/kitchensink-html5-mobile/
>> and to reproduce it all you need to do is deploy app, undeploy it and
>> profile app server. There should be no BeanManager & ValidatorFactory
>> instances laying around.
>>
>> I would also like to encgurage everyone else to profile their part of
>> code just to make sure we haven't missed anything.
>>
>> --
>> tomaz
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> wildfly-dev mailing list
>> wildfly-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>>
>
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>



More information about the wildfly-dev mailing list