Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-1983

PerThreadManager does not cleanup on shutdown, can lead to memory leaks when application redeployed

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      As reported on the mailing list:

      On Sun, Aug 5, 2012 at 1:25 AM, petr.charvat <petr.charvat@jpower8.cz> wrote:
      > My application uses tapestry 5.3.4 and I deploy it on Tomcat 6.0.35.
      > The internal tomcat listener JreMemoryLeakPreventionListener write to
      > console this message after undeploy/redeploy my application.
      >
      > 5.8.2012 9:23:18 org.apache.catalina.loader.WebappClassLoader
      > clearThreadLocalMap
      > SEVERE: The web application [/FitSoftware] created a ThreadLocal with key of
      > type
      > [org.apache.tapestry5.ioc.internal.services.PerthreadManagerImpl.MapHolder]
      > (value
      > [org.apache.tapestry5.ioc.internal.services.PerthreadManagerImpl$MapHolder@64efc9fb])
      > and a value of type [java.util.HashMap] (value [

      {1=DEFINED, 2=DEFINED, > 3=DEFINED, 4=DEFINED, 5=DEFINED, 6=DEFINED, 7=DEFINED, 8=DEFINED, 9=DEFINED, > 10=DEFINED, 11=DEFINED}

      ]) but failed to remove it when the web application
      > was stopped. This is very likely to create a memory leak.
      >
      > From the memory dump it seems, that GC can't remove previous version of the
      > application and after several redeploys permspace is gone.

      This does look like a bug, with a pretty easy fix.

      >
      > Is the message from tomcat memory leak detector relevant? What does the
      > value 1=DEFINED means?
      > Thanks for answer.

      Tapestry uses this class to manage a per-thread HashMap; the values in
      the HashMap are anything that Tapestry needs to track on a per-thread
      (not global) basis; including the values of page and component fields,
      and lots more besides. The key is an arbitrarily assigned Integer; it
      has no specific meaning.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            hlship Howard Lewis Ship
            hlship Howard Lewis Ship
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment