ThreadLocal内存泄漏问题及避免方法.pdfVIP

  • 0
  • 0
  • 约1.63千字
  • 约 2页
  • 2026-07-09 发布于北京
  • 举报

ThreadLocal有哪些内存泄漏问题,如何避免

每个Thread都有一个ThreadLocal.ThreadLocalMap的map,该map的key为ThreadLocal实例,它是

一个弱,我们知道弱有利于GC回收。当ThreadLocal的keynull时,GC就会回收这部分空

间,但是value却不一定能够被回收,因为它还与CurrentThread存在一个强关系,如下

由于存在这个强关系,会导致value无法回收。如果这个线程对象不会销毁,那么这个强关系则

会一直存在,就会出现内存泄漏情况。所以说只要这个线程对象能够及时被GC回收,就不会出现内存泄

漏。如果碰到线程池,那就更了。那么要怎么避免这个问题呢?面提过,在ThreadLocalMap中

的setEntry()、getEntry(),如果遇到keynull的情况,会对value设置为null。当然我们也可以显式调

用ThreadLocal的remove()方法进行处理。下面再对ThreadLocal进行简单的总结:

ThreadLocal不是用于解决共享变量的问题的,也不是为了协调线程同步而存在,而是为了方便每

个线程处理自己的状态而引入的

文档评论(0)

1亿VIP精品文档

相关文档