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.8k
2 个回答

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

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

推荐问题