ThreadLocal 内存泄露与最佳实践
几乎所有 Java 项目都在用 ThreadLocal 存储上下文信息,但很多人不知道它可能造成内存泄漏——而且是在你”原本以为不会”的场景下。 一、ThreadLocal 的设计初衷 1.1 线程隔离的数据存储——每个线程一份独立副本 1.2 典型使用场景——数据库连接、Session、事务上下文、链路追踪 TraceId 二、ThreadLocal 的底层结构 2.1 Thread → ThreadLocalMap → Entry(弱引用包装的 ThreadLocal 作为 key) 2.2 ThreadLocalMap 的数据结构——线性探测法解决哈希冲突 2.3 Entry...