T4.1.2 is released and in the main repo: http://mvnrepository.com/artifact/org.apache.tapestry/tapestry-framework
My POM: <dependency> <groupId>org.apache.tapestry</groupId> <artifactId>tapestry-framework</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.tapestry</groupId> <artifactId>tapestry-annotations</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.tapestry</groupId> <artifactId>tapestry-contrib</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>com.ewerk</groupId> <artifactId>ewerk-tapestry-components</artifactId> <version>0.0.7</version> </dependency> <dependency> <groupId>com.javaforge.tapestry</groupId> <artifactId>tapestry-spring</artifactId> <version>1.0.0</version> <!-- exclude the old referenced version of tapestry --> <exclusions> <exclusion> <groupId>tapestry</groupId> <artifactId>tapestry</artifactId> </exclusion> <exclusion> <groupId>tapestry</groupId> <artifactId>tapestry-annotations</artifactId> </exclusion> </exclusions> </dependency> Mit lieben Grüßen aus dem eWerk | Holger Stolzenberg | Softwareentwickler | | Geschäftsführer: | Frank Richter, Erik Wende, Hendrik Schubert | | eWerk IT GmbH | Markt 16 | Leipzig 04109 | http://www.ewerk.com | HRB 9065, AG Leipzig | Hauptniederlassung Leipzig | | fon +49.341.4 26 49-0 | fax +49.341.4 26 49-88 | mailto:[EMAIL PROTECTED] | | Support: | fon 0700 CALLME24 (0700 22556324) | fax 0700 CALLME24 (0700 22556324) | | Auskünfte und Angebote per Mail | sind freibleibend und unverbindlich. -----Ursprüngliche Nachricht----- Von: Peter Stavrinides [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 29. August 2007 09:31 An: Tapestry users Betreff: Re: Memory consumption in T4.1.2 - Hard data Correct me if I am wrong 4.1.2 is not released as yet, and not in the main repository, so how else would I get to it? [EMAIL PROTECTED] wrote: > But that POM does use snapshots. > You shouldn't need the repository > http://people.apache.org/repo/m2-snapshot-repository > at all. > Probably, there are no very significant differences between the latest > 4.1.2 snapshot and the release. But nevertheless, for a productive > environment, I'd always go with a released version. > > >> -----Original Message----- >> From: Peter Stavrinides [mailto:[EMAIL PROTECTED] >> Sent: Wednesday, August 29, 2007 7:45 AM >> To: Tapestry users >> Subject: Re: Memory consumption in T4.1.2 - Hard data >> >> This is my POM: >> >> <repositories> >> <repository> >> <releases> >> <updatePolicy>always</updatePolicy> >> <checksumPolicy>warn</checksumPolicy> >> </releases> >> <snapshots> >> <updatePolicy>always</updatePolicy> >> <checksumPolicy>fail</checksumPolicy> >> <repository> >> <id>apache.snapshots</id> >> <url>http://people.apache.org/repo/m2-snapshot-repository</url> >> </repository> >> </repositories> >> >> <dependency> >> <groupId>org.apache.tapestry</groupId> >> <artifactId>tapestry-framework</artifactId> >> <version>4.1.2-SNAPSHOT</version> >> <scope>test</scope> >> </dependency> >> <dependency> >> <groupId>org.apache.tapestry</groupId> >> <artifactId>tapestry-annotations</artifactId> >> <version>4.1.2-SNAPSHOT</version> >> <scope>test</scope> >> </dependency> >> <dependency> >> <groupId>org.apache.tapestry</groupId> >> <artifactId>tapestry-contrib</artifactId> >> <version>4.1.2-SNAPSHOT</version> >> <scope>test</scope> >> </dependency> >> <dependency> >> <groupId>org.apache.tapestry</groupId> >> <artifactId>tapestry-portlet</artifactId> >> <version>4.1.2-SNAPSHOT</version> >> <scope>test</scope> >> </dependency> >> >> [EMAIL PROTECTED] wrote: >> >>> >>> >>> >>>> 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] >>> >>> >>> >> --------------------------------------------------------------------- >> 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]