具体的内部机制我们直接贴上代码详细解释。因此它将自身的线程安全委托给了ConcurrentMap, get方法尽可能的将同步代码块缩小,这样可以有效提高WeakCache的性能。key0到key2分别表示实现了0到2个接口,keyX表示实现了3个或以上的接口,事实上大部分都只会用到key1和key2。这些key的生成工厂是在Proxy类中,通过WeakCache的构造器将key工厂传入。生成代理类后使用弱引用进行包装并放入reverseMap中,最后会返回原装的代理类。至此已经为大家详细揭示了WeakCache缓存的实现包括它的一级缓存和二级缓存实现的原理,以及二级缓存key生成的原理,还有最后它是怎样调用ProxyClassFactory来生成代理类的。在下一篇中将会深入ProxyGenerator这个类,来看看具体的代理类的字节码生成过程。

JDK动态代理之WeakCache缓存的实现机制

JDK动态代理之WeakCache缓存的实现机制

JDK动态代理之WeakCache缓存的实现机制

JDK动态代理之WeakCache缓存的实现机制