ThreadLocal底层实现中,为什么key使用弱引用?如果key被回收,再次get或set这个value会发生什么?
考察说明
考察对ThreadLocal内存模型、引用类型与内存泄漏机制的理解
回答思路
- 准确说明ThreadLocalMap中ThreadLocal作为key、value为实际对象的结构
- 解释弱引用设计目的:防止ThreadLocal对象无法被回收导致内存泄漏
- 说明key被回收后value仍被强引用指向,造成Entry未清除
- 分析get/set时清理过期Entry(expungeStaleEntry)的机制
- 区分线程池场景下ThreadLocal复用的内存泄漏风险
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。