ThreadLocal使用ThreadLocalMap存值,ThreadLocalMap内部有一个Entry数组,对ThreadLocal进行存值的时候,值会被存储到Entry数组中,存储的位置时通过对ThreadLocal对象进行hash计算出来的,entry[i].value=value,到这里可以看出在ThreadLocal是单例时,不存在内存溢出的可能性.
ThreadLocal的get与set操作会清理失联数据,导致溢出的原因threadloca一直被创建,set的时候entry[]数组一直扩容,导致内存泄露.
欢迎指正