I've spent some time on this issue today if I'm correct the problem is in the PaxWicketApplicationFactory WebApplicationWrapper.
Because of this WebApplicationWrapper getApplication().equals(getApplication()) returns false where you would expect true. 2012/10/22 Achim Nierbeck <bcanh...@googlemail.com>: > Here a little update to this, cause today my application did run into > an OOM due to this (with 1GB Heap) > The current HeapDump shows me > > That the wicket PropertyResolver uses about 1GB Ram, from those are > about 62MB for > > ------------------------------------------------------------------------------------------------------------------ > ref > |CGLIB$CALLBACK_0|org.ops4j.pax.wicket.internal.PaxWicketApplicationFactory$WebApplicationWrapper > @ 0xf2b693d0 > ------------------------------------------------------------------------------------------------------------------ > > I guess those are basically the session, looks OK right now. > But the rest is consumed by about 260000 ConcurrentHashMap Entries. > > For example: > > Type|Name |Value > ------------------------------------------------------------------------------------------------------------------ > ref > |CGLIB$CALLBACK_0|org.ops4j.pax.wicket.internal.PaxWicketApplicationFactory$WebApplicationWrapper > @ 0xc1fa0250 > ------------------------------------------------------------------------------------------------------------------ > > I don't know how to say this, but it seems awfully wrong right now ... > > regards, Achim > > 2012/10/22 Achim Nierbeck <bcanh...@googlemail.com>: >> Hi, >> >> I've seen the exact thing but didn't have the time (yet) to get a hold of it. >> But since it's mostly Wicket classes involved I had the impression >> it's wicket itself >> that does this. >> To prove something like it, I wanted to create an example which would work >> in both world (pax-wicket and wicket) but due to lack of time I wasn't able >> to >> get to it. >> >> But since I'm not the only one I'd guess this is something worthy to >> investigate :) >> My next test would have been to switch to Wicket 6 (pax-wicket 2.0) >> >> regards, Achim >> >> 2012/10/22 Bram Pouwelse <b...@pouwelse.com>: >>> Hi, >>> >>> I'm working on an application that's using Pax Wicket (version 1.1.0). >>> Because the application is using more memory than expected I'm running >>> some tests and analysing heap dumps for a few days now. >>> >>> While analysing the heap of my "weekend test" I've found this at the >>> top of the Pax Wicket bundle class loader at the top of the dominator >>> tree, seems to me that the PropertyResolver is creating new >>> DefaultClassCache instances all the time but I don't understand why. >>> >>> Below I've pasted a few selections from Eclipse Memory Analyzer: >>> >>> >>> Dominator tree: >>> >>> Class Name >>> | Shallow Heap | Retained Heap | >>> Percentage >>> ----------------------------------------------------------------------------------------------------------------------------------------------------- >>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5 @ >>> 0xc123ee58 | 88 | 643,602,288 | >>> 89.39% >>> |- java.util.Vector @ 0xc1252208 >>> | 32 | 643,566,800 | >>> 89.38% >>> | '- java.lang.Object[1280] @ 0xc2445ee8 >>> | 5,136 | 643,566,768 | >>> 89.38% >>> | |- class org.apache.wicket.util.lang.PropertyResolver @ >>> 0xb9b5d330 | 32 | >>> 643,420,472 | 89.36% * >>> | | '- java.util.concurrent.ConcurrentHashMap @ 0xc2962bf8 >>> | 48 | 643,420,440 | >>> 89.36% >>> | | '- java.util.concurrent.ConcurrentHashMap$Segment[16] @ >>> 0xc2962c28 | 80 | 643,420,392 | >>> 89.36% >>> | | |- java.util.concurrent.ConcurrentHashMap$Segment @ >>> 0xc2963098 | 40 | 643,418,872 | >>> 89.36% ** >>> | | | |- >>> java.util.concurrent.ConcurrentHashMap$HashEntry[262144] @ 0xd8674190 >>> | 1,048,592 | 643,418,768 | 89.36% >>> | | | | '- >>> java.util.concurrent.ConcurrentHashMap$HashEntry @ 0xea9687a8 >>> | 32 | 642,370,176 | 89.22% >>> | | | | |- >>> java.util.concurrent.ConcurrentHashMap$HashEntry @ 0xea967a28 >>> | 32 | 642,366,720 | 89.22% >>> | | | | | |- >>> java.util.concurrent.ConcurrentHashMap$HashEntry @ 0xea966ca8 >>> | 32 | 642,363,264 | 89.22% *** >>> | | | | | |- >>> org.apache.wicket.util.lang.PropertyResolver$DefaultClassCache @ >>> 0xea967398| 16 | 3,424 | 0.00% >>> | | | | | '- Total: 2 entries >>> | | | >>> | | | | |- >>> org.apache.wicket.util.lang.PropertyResolver$DefaultClassCache @ >>> 0xea968118 | 16 | 3,424 | 0.00% >>> | | | | '- Total: 2 entries >>> | | | >>> ----------------------------------------------------------------------------------------------------------------------------------------------------- >>> >>> * class org.apache.wicket.util.lang.PropertyResolver @ 0xb9b5d330 [statics]: >>> Type|Name |Value >>> --------------------------------------------------------------------------------------------- >>> ref |SET |set >>> ref |IS |is >>> ref |GET |get >>> ref >>> |applicationToClassesToGetAndSetters|java.util.concurrent.ConcurrentHashMap >>> @ 0xc2962bf8 >>> int |RESOLVE_CLASS |2 >>> int |CREATE_NEW_VALUE |1 >>> int |RETURN_NULL |0 >>> ref |log >>> |org.ops4j.pax.logging.slf4j.Slf4jLogger @ 0xc2972ba0 >>> --------------------------------------------------------------------------------------------- >>> >>> ** java.util.concurrent.ConcurrentHashMap$HashEntry[262144] @ >>> 0xd8674190 [attributes] >>> Type |Name |Value >>> -------------------------------------------------------------------------------------- >>> float|loadFactor|0.75 >>> ref |table >>> |java.util.concurrent.ConcurrentHashMap$HashEntry[262144] @ 0xd8674190 >>> int |threshold |196608 >>> int |modCount |185871 >>> int |count |185871 >>> ref |sync |java.util.concurrent.locks.ReentrantLock$NonfairSync >>> @ 0xc29630c0 >>> -------------------------------------------------------------------------------------- >>> >>> >>> *** java.util.concurrent.ConcurrentHashMap$HashEntry @ 0xea966ca8 >>> [attributes] >>> Type|Name |Value >>> --------------------------------------------------------------------------------------------------- >>> ref |next |java.util.concurrent.ConcurrentHashMap$HashEntry @ 0xea965f28 >>> ref |value|org.apache.wicket.util.lang.PropertyResolver$DefaultClassCache >>> @ 0xea966618 >>> int |hash |1234246985 >>> ref |key >>> |nl.ditp.fabuland.core.internal.WicketApplication$$EnhancerByCGLIB$$4188d86a >>> @ 0xc22bcc88 >>> --------------------------------------------------------------------------------------------------- >>> >>> >>> Is this caused by a coding error in the application or a bug in Wicket >>> / Pax Wicket? >>> >>> Thanks, >>> >>> Bram Pouwelse >>> >>> _______________________________________________ >>> general mailing list >>> general@lists.ops4j.org >>> http://lists.ops4j.org/mailman/listinfo/general >> >> >> >> -- >> >> Apache Karaf <http://karaf.apache.org/> Committer & PMC >> OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> >> Committer & Project Lead >> OPS4J Pax for Vaadin >> <http://team.ops4j.org/wiki/display/PAXVAADIN/Home> Commiter & Project >> Lead >> blog <http://notizblog.nierbeck.de/> > > > > -- > > Apache Karaf <http://karaf.apache.org/> Committer & PMC > OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> > Committer & Project Lead > OPS4J Pax for Vaadin > <http://team.ops4j.org/wiki/display/PAXVAADIN/Home> Commiter & Project > Lead > blog <http://notizblog.nierbeck.de/> > > _______________________________________________ > general mailing list > general@lists.ops4j.org > http://lists.ops4j.org/mailman/listinfo/general _______________________________________________ general mailing list general@lists.ops4j.org http://lists.ops4j.org/mailman/listinfo/general