关于使用ThreadLocal相关问题
茉妮卡 2019-02-16 08:59:44 小弟在高并发场景下,需缓存一些数据(因数据的加载耗时较长,且数据有点大,感觉不适合搞到redis之类,频繁重复访问时网络开销是个问题,还有序列化问题),且考虑到数据内部操作存在线程安全,所以使用了ThreadLocal。
但ThreadLocal内部保存的对象其实是弱引用,也就是说gc时会优先被回收,这就导致数据在某个并发少(但同个应用下还有其他不相干的,大量的并发请求)的时间段内,不断的被回收与重新加载,平均耗时被拉长。
同时,当并发量提高时,因每个线程都加载且保有一份数据,感觉又有点浪费,毕竟并不是所有线程同个时刻都在访问这份数据;并且随着业务的扩展,数据也会膨胀,所以线程都保有数据,内存也是个问题。
请问,有何解法。