ThreadLocal set时是Entry(key, value)set进ThreadLocalMap,而Entry是extends WeakReference<ThreadLocal<?>>的,所以当ThreadLocal=null时,GC会把ThreadLocal回收,但是Thread不死,ThreadLocalMap就会一直存在 ,GC把ThreadLocal回收后,ThreadLocalMap还存在一条无用的信息(key没了,value还在),这样就造成了内存泄漏,所以在ThreadLocal使用完成后,请调用remove方法
ThreadLocal
最新推荐文章于 2020-09-11 16:28:07 发布