ThreadLocal

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被内存泄露

那怎么才能不让这种情况发生呢?

  1. Thread = null
  2. ThreadLocalMap = null (好像不能,访问级别是默认的)
  3. Entry[] = null 也不能从外面的方法没有这样的操作
  4. entry[i] = null 这种是在get set resize 方法的时候可以

你可能感兴趣的:(ThreadLocal)