如果ThreadLocalMap中的key为强引用时,当ThreadLocal的引用指向null,但是每个线程的ThreadLocalMap会独立持有该对象,ThreadLocal对象就不会被回收,就会造成内存泄漏问题。
如果ThreadLocalMap中的key为弱引用时,当ThreadLocal的引用指向null,及时调用set方法或remove方法会避免内存泄漏问题。
无论是强引用或弱引用都有可能会引发内存泄漏问题。
根本原因是:ThreadLocalMap与线程的生命周期一样,没有手动删除nullkey的情况,就有可能出现内存泄漏问题。
在代码逻辑中使用完ThreadLocal,一定要使用remove方法及时清理,尽量不要使用全局的ThreadLocal。
ThreadLocal使用的是什么引用呢?
最新推荐文章于 2024-08-24 22:01:16 发布