ThreadLocal

两个优点:

​ 当前线程与其他线程互不影响

​ 在当前线程内全局共享

关于内存泄漏

动态的分配内存,由于某种原因而没有释放或者无法释放,导致内存浪费

ThreadLocal中有个ThreadLocalMap,而ThreadLocalMap中有Entry<String, String>,如果他是弱引用,那么他在GC回收时立即回收,这时key会被回收,但是null不会被回收,如果他是强引用,那么key和value都不会被回收,总之就是弱引用和强引用都会发生内存泄漏。

防止内存泄漏,在使用ThreadLocal后,使用remove()方法手动清楚所占空间