首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

ThreadLocalMap里Entry为何声明为WeakReference

* 此哈希表中的项继承了WeakReference * 它的主要引用域是key(这总是一个 ThreadLocal对象)。...的作用,百度一下: WeakReference是Java语言规范中为了区别直接的对象引用(程序中通过构造函数声明出来的对象引用)而定义的另外一种引用关系。...WeakReference标志性的特点是:reference实例不会影响到被应用对象的GC回收行为(即只要对象被除WeakReference对象之外所有的对象解除引用后,该对象便可以被GC回收),只不过在被对象回收之后...,reference实例想获得被应用的对象时程序会返回null 我的理解就是,WeakReference对应用的对象users是弱引用,不会影响到users的GC行为。...而Entry声明为WeakReference,users置为null后,线程的threadLocalMap就不算强引用了,users就可以被GC回收了。

1.6K80

防止内存泄露之让 Map 的 Key 没有其他强引用时可以被回收

3.2 使用 WeakReference WeakReference 是一种弱引用,它可以用来描述非必须存在的对象,当它指向的对象没有被其他强引用引用时,垃圾回收器会回收它。...因此,可以采用 WeakReference 包装 Key ,这样 Source 没有其他强引用时就可以被回收。...当然WeakReference 也存在一些缺点: WeakReference 不能保证对象的存活时间,当对象只被 WeakReference 引用时,它随时可能被垃圾回收器回收,这可能导致一些意外的情况或者数据丢失...WeakReference 需要额外的内存空间和时间来维护引用队列和弱引用对象,这可能影响程序的性能和效率。...WeakReference 不能单独使用,它需要配合其他强引用或者软引用来实现缓存或者监听等功能。

61330
领券