跳到主内容
← 返回题库
八股概念4/5 偏难通用题Java 后端 · 二面 ★ 0 · 浏览 4

ThreadLocal 内存泄漏成因与线程池下传递

线上一个接口使用 ThreadLocal 缓存用户上下文,压测时发现 Full GC 后老年代仍持续增长。请说明 ThreadLocal 的 ThreadLocalMap 结构、Entry 为什么用弱引用 key,内存泄漏究竟发生在哪条引用链上;并给出在线程池场景下正确清理与跨线程传递上下文的具体做法(至少两种)。

参考答案

先自己想 30 秒再看答案,比直接读一遍有用得多。

追问链

  1. 1. 如果子线程池是懒创建且核心线程复用,InheritableThreadLocal 为什么仍然会串数据;如何设计一个无侵入的上下文透传组件