Index: working_classlib/modules/luni/src/main/java/java/lang/reflect/Proxy.java =================================================================== --- working_classlib/modules/luni/src/main/java/java/lang/reflect/Proxy.java (revision 612717) +++ working_classlib/modules/luni/src/main/java/java/lang/reflect/Proxy.java (working copy) @@ -42,7 +42,7 @@ private static final Map>>> loaderCache = new WeakHashMap>>>(); // to find previously created types - private static final Map, String> proxyCache = new WeakHashMap, String>(); + private static final Map, String> proxyCache = new HashMap, String>(); private static int NextClassNameIndex = 0; @@ -230,9 +230,18 @@ if (cl == null) { throw new NullPointerException(); } - synchronized (proxyCache) { - return proxyCache.containsKey(cl); - } + + // nothing is removed from proxyCache, so we need only recheck when nothing found + // + boolean isContains = proxyCache.containsKey(cl); + if (isContains) { + return true; + } else { + synchronized (proxyCache) { + return proxyCache.containsKey(cl); + } + } + } /**