Andrus, > You will need something similar.
I was following you until you said this. The link you sent is code for the cayenne filter that is intended to be placed in the web.xml file for tomcat. I have already done this. So is your comment meant to imply that I need to *add* the filter, or *write* one myself. Whats more, if I have implemented your filter, then why would I need to create another one. Also, are these objects that hold on to my data objects? If so, then this is a rather important issue. Thanks Joe On Mar 14, 2012, at 9:59 AM, Andrus Adamchik wrote: > Ok. Now you are on to something. The remaining Cayenne event threads is an > indicator that the old version of the app was not undeployed. > > You need to ensure that you shut down your Cayenne Configuration (in 3.0) or > ServerRuntime (in 3.1) when your web application stops. Here is an example of > how Cayenne does it in WebApplicationContextFilter.destroy() : > > http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conf/WebApplicationContextFilter.java?view=markup > > You will need something similar. > > Andrus > > > On Mar 14, 2012, at 9:51 AM, Joe Baldwin wrote: > >> Andrus, >> >> After watching the video you suggested, I tried one of the "tricks". I >> started up tomcat, with the cayenne enabled app. Then took a snapshot with >> VisualVM. There appear to be 5 instances of >> org.apache.cayenne.event.EventManager$DispatchThread.run() >> >> This may or may not be normal, however when I redeployed the application >> (via ant-tomcat command) there were then 10 instances. Each time I >> redeployed the app, another 5 instances were displayed with VisualVM >> snapshot. >> >> I then tried another test, in which I restarted Tomcat (to get 5 instances >> of the EventManager) used Tomcat manager to undeploy the app (which >> ostensibly wipes the app from the tomcat dir structure), however, the 5 >> instances of the EventManager were still showing up in VisualVM snapshot. >> >> Mark Thomas (the video lecturer), said that this all *might* indicate a >> leak. However, since I am unfamiliar with the intended behavior, I cannot >> be sure. On the other hand, having these 5 instance multiply each time the >> app is redeployed does not seem like it is standard behavior. >> >> Thomas described an on behavior in which just adding a JDBC jar file to your >> WEB-INF/lib dir could cause a leak. The reasoning behind how the class >> loaders work was a bit convoluted, but I am wondering if these behaviors are >> related. >> >> So my question is what behavior would you expect, and what should my next >> test be? >> >> Joe >> >> >> On Mar 13, 2012, at 4:47 PM, Andrus Adamchik wrote: >> >>> >>> On Mar 13, 2012, at 4:03 PM, Mike Kienenberger wrote: >>> >>>> 2) Modern app servers restart and redeploy applications without >>>> restarting the app server. Thus, the memory leak might be from a >>>> previous application instance or application deployment. I think >>>> someone reported a possible Cayenne issue for that recently. >>> >>> I keep recommending to people this presentation by Mark Thomas from Tomcat >>> project: >>> >>> Video with slides: >>> http://www.infoq.com/presentations/Diagnosing-Memory-Leaks >>> Slides in PDF: >>> people.apache.org/~markt/presentations/2010-11-04-Memory-Leaks-60mins.pdf >>> >>> Even if you are not using Tomcat, but curious what happens to your memory, >>> I still recommend it :) It is applicable to any Java app server and was an >>> eye opener to me back in the day. >>> >>> Andrus >>> >> >> >