[ https://issues.apache.org/jira/browse/WICKET-2741?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor Vaynberg resolved WICKET-2741. ----------------------------------- Assignee: Igor Vaynberg Fix Version/s: 1.4.9 1.5-M1 Resolution: Fixed > 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 > Components: wicket > Affects Versions: 1.4.6 > Reporter: Nikita Tovstoles > Assignee: Igor Vaynberg > Fix For: 1.4.9, 1.5-M1 > > Attachments: wicket-2741.patch > > > 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.