droidyuecom / comments_droidyuecom

0 stars 0 forks source link

理解Java中的ThreadLocal - 技术小黑屋 #70

Open droidyuecom opened 5 years ago

droidyuecom commented 5 years ago

https://droidyue.com/blog/2016/03/13/learning-threadlocal-in-java/

理解Java中的ThreadLocal Mar 13th, 2016 提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?等等问题,本文将总结一下我对ThreadLocal的理解和认识, …

zhaoxbmsdn commented 5 years ago

谢谢,非常好的文档

la3rence commented 5 years ago

关于内存泄露,虽然 key 是弱引用,但是 value 不一定能被回收吧?因为它和 Current Thread 之间还存在一个强引用

uozuozuoz commented 4 years ago

value存在内存泄漏吧,生命周期和当前线程一样,只能手动remove才可以避免

ahTy commented 3 years ago

@Lonor 关于内存泄露,虽然 key 是弱引用,但是 value 不一定能被回收吧?因为它和 Current Thread 之间还存在一个强引用

@uozuozuoz value存在内存泄漏吧,生命周期和当前线程一样,只能手动remove才可以避免

其实这个思考是会存在的,但是这并不会导致服务器内存大面积泄露,只是仅仅来说有一个跟随ThreadLocalMap的一个值而已,其内存并不会一直增加,你考虑到了key的弱引用被回收了,那么就会出现更多的key被回收,而他们的value会覆盖,并不会存在多个key为null的情况,也就不会导致value占用的内存进一步增加,换句话说,当下一个key为null的情况出现,就是value被回收的时间,这种情况并不会导致传统意义上的(广义上的)内存泄漏,换句话说这个内存在可控范围