diff --git a/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java b/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java index 8f6e6c1cc..bb3cfaca3 100644 --- a/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java +++ b/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java @@ -70,8 +70,8 @@ public class Enhancer implements ClassFileTransformer { private final Matcher methodNameMatcher; private final EnhancerAffect affect; - // 类-字节码缓存 - private final static Map/* Class */, byte[]/* bytes of Class */> classBytesCache = new WeakHashMap, byte[]>(); + // 被增强的类的缓存 + private final static Map/* Class */, Object> classBytesCache = new WeakHashMap, Object>(); private static SpyImpl spyImpl = new SpyImpl(); static { @@ -190,7 +190,7 @@ public class Enhancer implements ClassFileTransformer { } } catch (Throwable e) { logger.error("the classloader can not load SpyAPI, ignore it. classloader: {}, className: {}", - inClassLoader.getName(), className); + inClassLoader.getClass().getName(), className); return null; } @@ -200,13 +200,6 @@ public class Enhancer implements ClassFileTransformer { return null; } - // 首先先检查是否在缓存中存在Class字节码 - // 因为要支持多人协作,存在多人同时增强的情况 - final byte[] byteOfClassInCache = classBytesCache.get(classBeingRedefined); - if (null != byteOfClassInCache) { - classfileBuffer = byteOfClassInCache; - } - ClassNode classNode = AsmUtils.toClassNode(classfileBuffer); // 生成增强字节码 @@ -307,8 +300,8 @@ public class Enhancer implements ClassFileTransformer { byte[] enhanceClassByteArray = AsmUtils.toBytes(classNode); - // 生成成功,推入缓存 - classBytesCache.put(classBeingRedefined, enhanceClassByteArray); + // 增强成功,记录类 + classBytesCache.put(classBeingRedefined, new Object()); // dump the class dumpClassIfNecessary(className, enhanceClassByteArray, affect);