问题的背景是我看到了这篇文章: [https://zhuanlan.zhihu.com/p/146410261](https://link.segmentfault.com/?enc=RyvEA0WIa1k1OWgHZ3vA8g%3D%3D.eUjeTVjmIonZiPCirsBzotjfFDqcsUeqt96utNqqz%2BWEMbfeFDn1Zq%2BD9dE4wyfW) 提到 强引用链: thread -> threadLocalMap -> counter -> MyCounter.class -> WebappClassLocader ,导致WebappClassLoader泄漏。 对这个有疑问。 Class类型被卸载的条件  ## 疑问点是 其中第二点: 加载该类的类加载被回收,是指 类加载器对象被gc。 假设MyCounter.class 由 WebAppClassLoader加载,那么 通过MyCounter.class.getClassLoader() 就可以得到WebAppClassLoader, 而WebAppClalssLoader 被gc的条件必然是没有任何人引用她, 所以 如何做到MyCounter.class 不会引用WebAppClassLoader? 否则是不是 就会出现 WebAppClassLoader一直被MyCounter.class所引用呢? 如果一直被引用的话那么WebAppClassLoader对象就不会被gc,那么MyCounter.class对象自然也不会被gc了。 感觉是鸡生蛋蛋生鸡的问题。 如果说 MyCounter.class 对 WebAppClassLoader对象有强引用, WebAppClassLoader对象又怎么可能会被回收呢。如果WebAppClassLoader对象不被gc,那么MyCOunter.class又怎么会被回收呢? b