non-performant Collections.synchronizedMap() should be replaced with 
ConcurrentMap
----------------------------------------------------------------------------------

                 Key: WICKET-2741
                 URL: https://issues.apache.org/jira/browse/WICKET-2741
             Project: Wicket
          Issue Type: Bug
    Affects Versions: 1.4.6
            Reporter: Nikita Tovstoles


The following two classes use Collections.synchronizedMap() --> lots of 
contention @ concurrent load. 
* RequestListenerInterface.interfaces
* WebApplication.addBufferedResponse
* Injector.inject() - 'cache' field. 

The last instance makes @SpringBean unusable in production (too much contention 
@ concurrent load)

Here's a sample output of contention around monitor of class 
java.util.Collections$SynchronizedMap:

{noformat}
+--------------------------------------------------------------------------------------+------------------+-----------------+
|                                         Name                                  
       |    Time (ms)     |      Count      |
+--------------------------------------------------------------------------------------+------------------+-----------------+
|  +---java.util.Collections$SynchronizedMap.get(Object)                        
       |  126,101   51 %  |  19,145   52 %  |
|  | |                                                                          
       |                  |                 |
|  | +---org.apache.wicket.injection.Injector.inject(Object, 
IFieldValueFactory)       |  109,912   45 %  |  16,285   44 %  |
|  | |                                                                          
       |                  |                 |
|  | +---org.springframework.beans.CachedIntrospectionResults.forClass(Class)   
       |   16,188    7 %  |   2,860    8 %  |
|  |                                                                            
       |                  |                 |
|  +---java.util.Collections$SynchronizedMap.put(Object, Object)                
       |  119,343   49 %  |  17,676   48 %  |
|    |                                                                          
       |                  |                 |
|    +---org.apache.wicket.injection.Injector.inject(Object, 
IFieldValueFactory)       |                  |                 |
|      |                                                                        
       |                  |                 |
|      +---org.apache.wicket.injection.ConfigurableInjector.inject(Object)      
       |                  |                 |
|        |                                                                      
       |                  |                 |
|        
+---org.apache.wicket.injection.ComponentInjector.onInstantiation(Component)  | 
 118,060   48 %  |  17,467   47 %  |
|        |                                                                      
       |                  |                 |
|        +---com.castanealabs.gui.model.ZipCodeValidator.<init>()               
       |      686    0 %  |     106    0 %  |
|        |                                                                      
       |                  |                 |
|        
+---com.castanealabs.gui.model.ProductSkuProgramDataProvider.<init>(IModel)   | 
     337    0 %  |      59    0 %  |
|        |                                                                      
       |                  |                 |
|        
+---com.castanealabs.gui.model.ProductTypeProgramDataProvider.<init>(IModel)  | 
     259    0 %  |      44    0 %  |
+--------------------------------------------------------------------------------------+------------------+-----------------+

Generated by YourKit Java Profiler 8.0.22 Feb 12, 2010 3:52:25 PM
{noformat}


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to