> my configuration is as follows:
> 
> JDK 6.01 32bit JVM (I have also tested on a 64 bit with no 
> luck) Tomcat 5.5.20 Debian Linux (2.6.15.28 kernel) Tapestry 
> 4.1.2-SNAPSHOT with ognl 2.7
> 

Hi Peter, 4.1.2-SNAPSHOT is a typo, I suppose?

> regards,
> Peter
> 
> Jesse Kuhnert wrote:
> > I'd downgrade then if I were you.   Extensive profiling with yourkit
> > hasn't shed any new light on whatever problems others are having.
> > The OGNL classes indeed aren't being kept in the javassist 
> pool from 
> > what I can tell.
> >
> > I have another yourkit snapshot binary to look at so we'll 
> see what that says.
> >
> > I don't remember - have you filed any bug reports or reported any 
> > problems?  Are you getting ognl exceptions during 
> development as well 
> > as production?  Do these errors sound like 
> ummmmm....potential errors 
> > that should be looked at further?
> >
> > On 8/28/07, Peter Stavrinides <[EMAIL PROTECTED]> wrote:
> >   
> >> Hi Jessie
> >>
> >> Any progress on this? .... sorry to bug you, but I have to take a 
> >> decision soon, I have two production machines that will need to 
> >> upgrade or downgrade Tapestry.
> >>
> >> Best wishes,
> >> Peter
> >>
> >> Jon Oakes wrote:
> >>     
> >>> Hi Bryan,
> >>>
> >>> I am a relative newbie but I was wondering if  you are 
> running with 
> >>> caching enabled or disabled?  It might make sense to keep things 
> >>> around when caching is disabled whereas I think it would 
> clearly be 
> >>> a bug to keep things around with it disabled.
> >>>
> >>> Jon Oakes
> >>>
> >>>
> >>> Jesse Kuhnert wrote:
> >>>       
> >>>> Hmmm...well,  I don't think I like the sound of any of 
> that.  I'm just
> >>>> going to pretend this problem doesn't exist.   (just kidding)
> >>>>
> >>>> I had thought I was doing something special with the ognl 
> >>>> compilations that would cause its generated classes to not hang 
> >>>> around afterwards in any pools.
> >>>>
> >>>> I'll take a look at things this weekend and am sure a fix will 
> >>>> appear in between now and Monday - if there is a 
> reasonable fix to be found.
> >>>> (in 4.1.3 snapshot form)
> >>>>
> >>>> On 8/24/07, Bryan Dotzour <[EMAIL PROTECTED]> 
> <mailto:[EMAIL PROTECTED]> wrote:
> >>>>
> >>>>         
> >>>>> I and another colleague of mine have been investigating 
> what seems 
> >>>>> to be a "memory leak" in our Tapestry application for about a 
> >>>>> month since we upgraded to T4.1.2.  I won't bore you 
> with the saga 
> >>>>> of the last month, but I would like to present the data I've 
> >>>>> gathered and look to the list for a proposed solution.  I was 
> >>>>> reading a recent thread in which Jesse said (08/09/2007):
> >>>>>
> >>>>>
> >>>>>
> >>>>> "There is a map that grows as large as the system using it 
> >>>>> internally to javassist of various cached reflection 
> info - but it 
> >>>>> doesn't leak in any way."
> >>>>>
> >>>>> This is precisely what I've found in profiling our 
> application and 
> >>>>> it
> >>>>> *appears* to be this map that is causing our applications to 
> >>>>> eventually run out of memory.
> >>>>>
> >>>>> The YourKit profiler shows me that, as time goes on, 
> there is an 
> >>>>> instance of HiveMindClassPool  that grows and grows as class 
> >>>>> instances are created.  This class extends from 
> >>>>> javassist.ClassPool and is the map that Jesse is 
> talking about in 
> >>>>> his quote above.  And he's right, I wouldn't say that the class 
> >>>>> pool "leaks" either because it looks like it's designed 
> to retain 
> >>>>> that memory until the class pool itself is no longer needed.
> >>>>>
> >>>>>
> >>>>>
> >>>>> Take this quote from the javassist.ClassPool javadocs:
> >>>>>
> >>>>> "Memory consumption memo:
> >>>>> ClassPool objects hold all the CtClasses that have been 
> created so 
> >>>>> that the consistency among modified classes can be guaranteed. 
> >>>>> Thus if a large number of CtClasses are processed, the 
> ClassPool 
> >>>>> will consume a huge amount of memory. To avoid this, a 
> ClassPool 
> >>>>> object should be recreated, for example, every hundred classes 
> >>>>> processed. Note that
> >>>>> getDefault() is a singleton factory. Otherwise, detach() in 
> >>>>> CtClass should be used to avoid huge memory consumption. "
> >>>>>
> >>>>> This huge memory consumption by the ClassPool is what I was 
> >>>>> seeing. In particular it is the ClassPool that is held 
> onto by OgnlRuntime.
> >>>>> Inspecting this object in the profiler showed that it has a map 
> >>>>> containing about 45,000 classes.  All of the keys into this map 
> >>>>> were things like:  "ASTTest_11494aca9af" and 
> "ASTAnd_11494ace4fb" 
> >>>>> and the values are instances of javassist.CtNewClass.  
> Each entry 
> >>>>> in this map looks like it retains about 1,900 bytes, 
> for a grand 
> >>>>> total of about 90 MB of memory used.
> >>>>>
> >>>>> These numbers came from my staging deployment where I had the 
> >>>>> profiler attached, using some reflection tricks I was 
> able to look 
> >>>>> at a production site and found that it had about 
> 240,000 items in 
> >>>>> that class pool.. approximately 450 MB of memory.
> >>>>>
> >>>>> So I guess the questions in my mind are:  Why are there so many 
> >>>>> classes in the pool?  Why does the number only ever go up?  Do 
> >>>>> those classes really need to stay in the pool forever?
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>           
> >>> 
> --------------------------------------------------------------------
> >>> - To unsubscribe, e-mail: 
> [EMAIL PROTECTED] For 
> >>> additional commands, e-mail: [EMAIL PROTECTED]
> >>>       
> >> 
> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>     
> >
> >
> >   
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to