Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-2372

Memory leak in AbstractJBossMarshaller

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Blocker Blocker
    • 5.2.0.Final
    • 5.2.0.Final
    • None

      AbstractJBossMarshaller.marshallerTL is leaking PerThreadInstanceHolder instances. These hold a reference to MarshallingConfiguration, which indirectly holds a reference to the classloader, which of course holds a truckload of stuff.

      The cause of the leak is the fact that noone ever calls remove() on marshallerTL.

      I've tried adding marshallerTL.remove() to AbstractJBossMarshaller.stop(), but this only removed references from JBossAS' MSC Service threads. Other threads (in my case only one thread - "http-/127.0.0.1:8080-2") are still causing the leak.

      Here's the complete path from Thread to ModuleClassLoader:

      classes of org.jboss.modules.ModuleClassLoader
      value of java.util.Hashtable$Entry
      [4] of java.util.Hashtable$Entry[23]
      table of org.infinispan.util.Immutables$ImmutableTypedProperties
      configurationProperties of org.hibernate.search.impl.ImmutableSearchFactory
      delegate of org.hibernate.search.impl.MutableSearchFactory"
      searchFactoryImplementor of org.infinispan.query.CommandInitializer
      value of java.util.HashMap$Entry
      [0] of java.util.HashMap$Entry[4]
      table of java.util.HashMap
      commandInitializers of org.infinispan.util.ModuleProperties
      moduleProperties of org.infinispan.factories.GlobalComponentRegistry
      gcr of org.infinispan.marshall.jboss.ExternalizerTable
      objectTable of org.jboss.marshalling.MarshallingConfiguration
      configuration of org.infinispan.marshall.jboss.AbstractJBossMarshaller$PerThreadInstanceHolder
      value of java.lang.ThreadLocal$ThreadLocalMap$Entry
      [3462] of java.lang.ThreadLocal$ThreadLocalMap$Entry[4096]
      table of java.lang.ThreadLocal$ThreadLocalMap
      threadLocals of java.lang.Thread [Stack Local, Thread]  ""http-/127.0.0.1:8080-2"" native ID: 0x1B18", "28"
      

              dberinde@redhat.com Dan Berindei (Inactive)
              marko.luksa@gmail.com Marko Luksa (Inactive)
              Archiver:
              rhn-support-adongare Amol Dongare

                Created:
                Updated:
                Resolved:
                Archived: