ThreadLocal
2021-04-06 00:27:20 0 举报
ThreadLocal
作者其他创作
大纲/内容
ThreadLocal被两个对象引用,当栈中变量释放就剩Entry中的key引用这个对象了,如果用了强引用并且忘记remove()会导致Threadlocal无法被回收。用了弱引用只是确保ThreadLocal在内有调用remove()的时候会被回收,但是无法确保ThreadLocanMap中的Entry被回收,所以防止内存泄漏还是要调用remove()方法。
ThreadLocalMap
value
ThreadLocalRef
ThreadLocal
Stack
V
ThreadRef
ThreadLocal不是存储在TLAB的,这是两回事
ThreadLocal保存变量的副本,保证该变量不会被其他线程修改,是线程隔离的ThreadLocal是Thread的一个变量,所以每个线程的ThreadLocal都是独立的ThreadLocalMap是ThreadLocal的静态内部类,每个数据用Entry保存,Entry继承于WeakReference
CurrentThread
key
0 条评论
下一页