http://blog.csdn.net/a837199685/article/details/50806876
自己做个笔记,上面这个文章写的挺好的,mark下
Thread ----> ThreadLocalMap ---- > Entry[] --------> Entry ----> key value
key 是 弱引用
ThreadLocalMap 在get的时候,一般都会先判断entry是不是null,然后在判断Entry.get()也就是弱引用是不是null
这里面有个问题,就是在entry里key是弱引用,可能就没了,但是entry还在,还在被entry[]数组引用,所以可能会造成value还有。所以可能导致value被内存泄露
那怎么才能不让这种情况发生呢?
- Thread = null
- ThreadLocalMap = null (好像不能,访问级别是默认的)
- Entry[] = null 也不能从外面的方法没有这样的操作
- entry[i] = null 这种是在get set resize 方法的时候可以
网友评论