From 4ccfb4fada87e6283daf357722e978833e9140b0 Mon Sep 17 00:00:00 2001 From: "tony.chenl" Date: Fri, 28 Oct 2011 09:52:49 +0000 Subject: [PATCH] add cache for ReflectUtils DUBBO-13 git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@126 1a56cb94-b969-4eaa-88fa-be21384802f2 --- .../com/alibaba/dubbo/common/utils/ReflectUtils.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ReflectUtils.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ReflectUtils.java index e052f837a2..ad593c8746 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ReflectUtils.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ReflectUtils.java @@ -23,6 +23,8 @@ import java.security.CodeSource; import java.security.ProtectionDomain; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -107,6 +109,8 @@ public final class ReflectUtils { public static final Pattern SETTER_METHOD_DESC_PATTERN = Pattern.compile("set([A-Z][_a-zA-Z0-9]*)\\((" + DESC_REGEX + ")\\)V"); public static final Pattern IS_HAS_CAN_METHOD_DESC_PATTERN = Pattern.compile("(?:is|has|can)([A-Z][_a-zA-Z0-9]*)\\(\\)Z"); + + private static final ConcurrentMap[]> DESC_CLASSARRAY_CACHE = new ConcurrentHashMap[]>(); /** * is compatible. @@ -668,7 +672,12 @@ public final class ReflectUtils { */ public static Class[] desc2classArray(String desc) throws ClassNotFoundException { - return desc2classArray(ClassHelper.getClassLoader(), desc); + Class[] ret = DESC_CLASSARRAY_CACHE.get(desc); + if (ret == null){ + ret = desc2classArray(ClassHelper.getClassLoader(), desc); + DESC_CLASSARRAY_CACHE.put(desc, ret); + } + return ret; } /**