1、使用完线程共享变量后,显示调用 ThreadLocalMap,remove 方法清除线程共享变量;
Key是弱引用,调用ThreadLocal的 get()、set() 方法时完成后再调用remove方法,将Entry节点和Map的引用关系移除,这样整个Entry对象在GC Roots分析后就变成不可达了,下次GC的时候就可以被回收。
2、JDK建议ThreadLocal定义为 private static ,这样ThreadLocal的弱引用问题则不存在了。
1、使用完线程共享变量后,显示调用 ThreadLocalMap,remove 方法清除线程共享变量;
Key是弱引用,调用ThreadLocal的 get()、set() 方法时完成后再调用remove方法,将Entry节点和Map的引用关系移除,这样整个Entry对象在GC Roots分析后就变成不可达了,下次GC的时候就可以被回收。
2、JDK建议ThreadLocal定义为 private static ,这样ThreadLocal的弱引用问题则不存在了。