Java:ThreadLocal 与软引用

Entry 为 ThreadLocalMap 的静态内部类

static class Entry extends WeakReference<ThreadLocal<?>> {
    Object value;
    Entry(ThreadLocal<?> k, Object v) {
        super(k);
        value = v;
    }
}

直接调用 WeakReference 的构造方法将 ThreadLocal 构造为软引用不就行了,Entry 为啥也要跟着一起继承 WeakReference 呢?

阅读 1.7k
2 个回答

Entry才是实际上放东西的地方啊。
就算钱包离开你身边,钱还是在钱包里啊,还是强连接啊。
还是内存泄露啊

这个Entry 只是在说明,弱引用 ThreadLocal, 没有其他意思,连 value 都是强引用。所以在 ThreadLocal 没有任何外部强引用后,会在下一次GC中被回收。而 value 则不会被回收。所以容易导致内存泄漏,需要手动清理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题