编辑
2024-08-26
面试题库
0
请注意,本文编写于 149 天前,最后修改于 149 天前,其中某些信息可能已经过时。

什么是弱引用?仅有弱引用(WeakReference)指向的对象,只能生存到下一次垃圾回收之前。换句话说,当 GC 发生时,不管内存够不够,仅有弱引用所指向的对象都会被回收。而拥有强引用指向的对象,则不会被直接回收。

ThreadLocalMap 中 Entry 的 Key 使用了弱引用,在下次 GC 发生时,就可以使那些没有被其他强引用指向、仅被 Entry 的 Key 所指向的 ThreadLocal 实例能被顺利回收。并且,在 Entry的 Key 引用被回收之后,其 Entry 的 Key 值变为 null。后续当 ThreadLocal 的 get、set 或 remove 被调用时,ThreadLocalMap 的内部代码会清除这些 Key 为 null 的 Entry,从而完成相应的内存释放。防止发生内存泄漏。

本文作者:whitebear

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!