作品分享
问答交流
发现
任务
客服工单
一样寻常来说利用ThreadLocal时会有两个引用指向ThreadLocal对象,一个是创建ThreadLocal对象时的显式的引用,尚有一个就是ThreadLocalMap对ThreadLocal对象的弱引用,当我们不再利用ThreadLocal时,显式引用不再指向ThreadLocal对象。这时只有ThreadLocalMap对ThreadLocal对象的弱引用存在。
下一次垃圾接纳时,无论内存空间是否富足,只被弱引用指向的对象都会被直接接纳。以是将ThreadLocalMap对ThreadLocal对象的引用设置成弱引用,就能克制ThreadLocal对象无法接纳导致内存走漏的题目。但是ThreadLocalMap对value的引用是强引用,以是value部分还是有内存走漏的大概。以是ThreadLocal类定义了expungeStaleEntry方法用于清算key为null的value。expungeStaleEntry在remove中方法中调用。
举报
本版积分规则 回帖后跳转到最后一页
Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )
GMT+8, 2025-8-24 11:30, Processed in 0.127475 second(s), 34 queries.© 2003-2025 cbk Team.