From 98be36a306e96348f1371128ffdaae367928825e Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 13 Nov 2015 08:31:00 +0100 Subject: [PATCH] Extended default collection size for common per-bean caches Issue: SPR-13621 --- .../aop/framework/AbstractAdvisingBeanPostProcessor.java | 2 +- .../annotation/AutowiredAnnotationBeanPostProcessor.java | 6 +++--- .../annotation/InitDestroyAnnotationBeanPostProcessor.java | 2 +- .../factory/support/AbstractAutowireCapableBeanFactory.java | 2 +- .../beans/factory/support/AbstractBeanFactory.java | 5 +++-- .../beans/factory/support/DefaultListableBeanFactory.java | 4 ++-- .../beans/factory/support/DefaultSingletonBeanRegistry.java | 4 ++-- .../annotation/CommonAnnotationBeanPostProcessor.java | 2 +- .../context/support/PostProcessorRegistrationDelegate.java | 2 +- .../jpa/support/PersistenceAnnotationBeanPostProcessor.java | 2 +- 10 files changed, 16 insertions(+), 15 deletions(-) diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/AbstractAdvisingBeanPostProcessor.java b/spring-aop/src/main/java/org/springframework/aop/framework/AbstractAdvisingBeanPostProcessor.java index 7a281ae2b1b..7f366d56029 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/AbstractAdvisingBeanPostProcessor.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/AbstractAdvisingBeanPostProcessor.java @@ -37,7 +37,7 @@ public abstract class AbstractAdvisingBeanPostProcessor extends ProxyProcessorSu protected boolean beforeExistingAdvisors = false; - private final Map, Boolean> eligibleBeans = new ConcurrentHashMap, Boolean>(64); + private final Map, Boolean> eligibleBeans = new ConcurrentHashMap, Boolean>(256); /** diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java index 20171c0fdf4..c008a796bed 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java @@ -129,13 +129,13 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean private ConfigurableListableBeanFactory beanFactory; private final Set lookupMethodsChecked = - Collections.newSetFromMap(new ConcurrentHashMap(64)); + Collections.newSetFromMap(new ConcurrentHashMap(256)); private final Map, Constructor[]> candidateConstructorsCache = - new ConcurrentHashMap, Constructor[]>(64); + new ConcurrentHashMap, Constructor[]>(256); private final Map injectionMetadataCache = - new ConcurrentHashMap(64); + new ConcurrentHashMap(256); /** diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java index 914c44b6c93..3c7c0577da5 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java @@ -83,7 +83,7 @@ public class InitDestroyAnnotationBeanPostProcessor private int order = Ordered.LOWEST_PRECEDENCE; private transient final Map, LifecycleMetadata> lifecycleMetadataCache = - new ConcurrentHashMap, LifecycleMetadata>(64); + new ConcurrentHashMap, LifecycleMetadata>(256); /** diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java index 3b505b5fc9b..cf25cd5b9a3 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java @@ -150,7 +150,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac /** Cache of filtered PropertyDescriptors: bean Class -> PropertyDescriptor array */ private final ConcurrentMap, PropertyDescriptor[]> filteredPropertyDescriptorsCache = - new ConcurrentHashMap, PropertyDescriptor[]>(64); + new ConcurrentHashMap, PropertyDescriptor[]>(256); /** diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java index fab12fd5947..edfd33d1081 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java @@ -161,10 +161,11 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp /** Map from bean name to merged RootBeanDefinition */ private final Map mergedBeanDefinitions = - new ConcurrentHashMap(64); + new ConcurrentHashMap(256); /** Names of beans that have already been created at least once */ - private final Set alreadyCreated = Collections.newSetFromMap(new ConcurrentHashMap(64)); + private final Set alreadyCreated = + Collections.newSetFromMap(new ConcurrentHashMap(256)); /** Names of beans that are currently in creation */ private final ThreadLocal prototypesCurrentlyInCreation = diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java index 6e87ae230f1..7a32060e28f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java @@ -158,7 +158,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto private final Map, Object> resolvableDependencies = new ConcurrentHashMap, Object>(16); /** Map of bean definition objects, keyed by bean name */ - private final Map beanDefinitionMap = new ConcurrentHashMap(64); + private final Map beanDefinitionMap = new ConcurrentHashMap(256); /** Map of singleton and non-singleton bean names, keyed by dependency type */ private final Map, String[]> allBeanNamesByType = new ConcurrentHashMap, String[]>(64); @@ -167,7 +167,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto private final Map, String[]> singletonBeanNamesByType = new ConcurrentHashMap, String[]>(64); /** List of bean definition names, in registration order */ - private volatile List beanDefinitionNames = new ArrayList(64); + private volatile List beanDefinitionNames = new ArrayList(256); /** List of names of manually registered singletons, in registration order */ private volatile Set manualSingletonNames = new LinkedHashSet(16); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java index 2077a101bdb..9042bad5cbf 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java @@ -83,7 +83,7 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements protected final Log logger = LogFactory.getLog(getClass()); /** Cache of singleton objects: bean name --> bean instance */ - private final Map singletonObjects = new ConcurrentHashMap(64); + private final Map singletonObjects = new ConcurrentHashMap(256); /** Cache of singleton factories: bean name --> ObjectFactory */ private final Map> singletonFactories = new HashMap>(16); @@ -92,7 +92,7 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements private final Map earlySingletonObjects = new HashMap(16); /** Set of registered singletons, containing the bean names in registration order */ - private final Set registeredSingletons = new LinkedHashSet(64); + private final Set registeredSingletons = new LinkedHashSet(256); /** Names of beans that are currently in creation */ private final Set singletonsCurrentlyInCreation = diff --git a/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java b/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java index a17cb138c15..f621ea24be2 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java @@ -179,7 +179,7 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean private transient BeanFactory beanFactory; private transient final Map injectionMetadataCache = - new ConcurrentHashMap(64); + new ConcurrentHashMap(256); /** diff --git a/spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java b/spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java index e7b3b79dee4..aac3383938d 100644 --- a/spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java +++ b/spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java @@ -353,7 +353,7 @@ class PostProcessorRegistrationDelegate { private final AbstractApplicationContext applicationContext; - private final Map singletonNames = new ConcurrentHashMap(64); + private final Map singletonNames = new ConcurrentHashMap(256); public ApplicationListenerDetector(AbstractApplicationContext applicationContext) { this.applicationContext = applicationContext; diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java b/spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java index 9b7aac98a81..97297ae4827 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java @@ -190,7 +190,7 @@ public class PersistenceAnnotationBeanPostProcessor private transient ListableBeanFactory beanFactory; private transient final Map injectionMetadataCache = - new ConcurrentHashMap(64); + new ConcurrentHashMap(256); private final Map extendedEntityManagersToClose = new ConcurrentHashMap(16);