Hi Andreas,

I did change this locally and I'm testing it right now.
Will give feedback later ...

regards, Achim

2012/10/23 Andreas Pieber <anpie...@gmail.com>:
> Well, I can commit your proposed changes, but you would still have to build
> pax wicket locally and use the snapshots. When you confirm that the problem
> I really fixed I can push a release to Central within a Max of 8 hours...
>
> Let me know of I can help you in any way.
>
> Kind regards, Andreas
>
> On Oct 22, 2012 6:23 PM, "Bram Pouwelse" <b...@pouwelse.com> wrote:
>>
>> Hi Andreas,
>>
>> I've looked at the PropertyResolver at line 1447 a key is determined
>> to use in a ConcurrentHashMap [1]. This key is the application
>> returned by getApplication() after some testing I found out that
>> equals on application doesn't work by putting
>> getApplication().equals(getApplication())  in a sample application.
>>
>> If I remove the special case for equals, hashCode and toString from
>> the intercept method [2]  getApplication().equals(getApplication())
>> returns true as I would expect. I've created a similar HashMap in my
>> test application and a map with Application as a key seems to work
>> after the change. Didn't have a chance to do any real world test with
>> this.
>>
>> Thanks
>>
>> Bram
>>
>> [1]
>> https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/core/util/lang/PropertyResolver.java#L1447
>> [2]
>> https://github.com/ops4j/org.ops4j.pax.wicket/blob/master/service/src/main/java/org/ops4j/pax/wicket/internal/PaxWicketApplicationFactory.java#L115
>>
>> 2012/10/22 Andreas Pieber <anpie...@gmail.com>:
>> > well, it's quite possible that the CG lib does some quircks here. Has
>> > anyone already tried to set breakpoints into the PropertyResolver [1]
>> > checking what's exactly the problem? I'll start tomorrow morning by
>> > doing exactly this...
>> >
>> > If getApplication().equals(getApplication()) is really the problem
>> > (where did you find that code btw?) I might find a workaround for that
>> > case... let's see to nail down the problem first.
>> >
>> > Kind regards,
>> > Andreas
>> >
>> > [1]
>> > https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/core/util/lang/PropertyResolver.java
>> >
>> > On Mon, Oct 22, 2012 at 5:07 PM, Achim Nierbeck
>> > <bcanh...@googlemail.com> wrote:
>> >> Oh, one more,
>> >>
>> >> after running a Component Report i got the following info about it:
>> >>
>> >>
>> >>
>> >> Empty Collections
>> >>
>> >>
>> >> Detected the following empty collections:
>> >> •6.482.518 instances of java.util.concurrent.ConcurrentHashMap$Segment
>> >> retain >= 829.762.448 bytes.
>> >>
>> >>
>> >>  Collection Fill Ratios
>> >>
>> >>
>> >> Detected the following collections with fill ratios below 20%:
>> >> •432.156 instances of java.util.concurrent.ConcurrentHashMap retain >=
>> >> 1.018.329.768 bytes.
>> >>
>> >> Map Collision Ratios
>> >>
>> >>
>> >> Detected the following maps with collision ratios above 80%:
>> >> •1 instances of java.util.concurrent.ConcurrentHashMap retain
>> >> 1.038.046.920 bytes.
>> >> •1 instances of java.util.concurrent.ConcurrentHashMap$Segment retain
>> >> 296 bytes.
>> >>
>> >> I haven't found the root cause of it, but somehow I have the
>> >> impression this might be an issue of Pax-Wicket?
>> >>
>> >> btw. I'm using Pax-Wicket in Version 1.0.2
>> >>
>> >> regards, Achim
>> >>
>> >>
>> >> 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/>
>> >>
>> >>
>> >>
>> >> --
>> >>
>> >> 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
>>
>> _______________________________________________
>> 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
>



-- 

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

Reply via email to