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

Reply via email to