ThreadLocal是什么
ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。
下图为ThreadLocal的内部结构图
从上面的结构图,我们已经窥见ThreadLocal的核心机制:
-
每个Thread线程内部都有一个Map。
-
Map里面存储线程本地对象(key)和线程的变量副本(value)
-
但是,Thread内部的Map是由ThreadLocal维护的,由ThreadLocal负责向map获取和设置线程的变量值。
所以对于不同的线程,每次获取副本值时,别的线程并不能获取到当前线程的副本值,形成了副本的隔离,互不干扰。
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
-
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
-
视频教程:https://doc.iocoder.cn/video/
ThreadLocalMap
ThreadLocalMap是ThreadLocal的内部类,没有实现Map接口,用独立的方式实现了Map的功能,其内部的Entry也独立实现。
和HashMap的最大的不同在于,ThreadLocalMap结构非常简单,没有next引用,也就是说ThreadLocalMap中解决Hash冲突的方式并非链表的方式,而是采用线性探测的方式。(ThreadLocalMap如何解决冲突? )
在ThreadLocalMap中,也是用Entry来保存K-V结构数据的。但是Entry中key只能是ThreadLocal对象,这点被Entry的构造方法已经限定死了。
staticclassEntryextendsWeakReference<ThreadLocal>{
/**ThevalueassociatedwiththisThreadLocal.*/
Objectvalue;
Entry(ThreadLocalk,Objectv){
super(k);
value=v;
}
}
注意了!!
Entry继承自WeakReference(弱引用,生命周期只能存活到下次GC前),但只有Key是弱引用类型的,Value并非弱引用。(问题马上就来了)
由于ThreadLocalMap的key是弱引用,而Value是强引用。这就导致了一个问题,ThreadLocal在没有外部对象强引用时,发生GC时弱引用Key会被回收,而Value不会回收。
当线程没有结束,但是ThreadLocal已经被回收,则可能导致线程中存在ThreadLocalMap
的键值对,造成内存泄露。(ThreadLocal被回收,ThreadLocal关联的线程共享变量还存在)。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
-
项目地址:https://github.com/YunaiV/yudao-cloud
-
视频教程:https://doc.iocoder.cn/video/
如何避免泄漏
为了防止此类情况的出现,我们有两种手段。
1、使用完线程共享变量后,显示调用ThreadLocalMap.remove
方法清除线程共享变量;
既然Key是弱引用,那么我们要做的事,就是在调用ThreadLocal的get()
、set()
方法时完成后再调用remove方法,将Entry节点和Map的引用关系移除,这样整个Entry对象在GC Roots分析后就变成不可达了,下次GC的时候就可以被回收。
2、JDK建议ThreadLocal定义为private static
,这样ThreadLocal的弱引用问题则不存在了。
审核编辑 :李倩
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
原文标题:ThreadLocal 搭配线程池使用造成内存泄漏的原因和解决方案
文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。
相关推荐
TLKS-PMG-100BM输电线路全景视频监控装置是电力巡检领域的智能化升级,它的出现将大幅提升电力网络的管理效率,保障电力供应的持续稳定,为人们的生产生活提供更加可靠的电力保障。
发表于 11-16 17:51
•54次阅读
码垛机器人搬运码垛的运转趋势呈现出多方面的特点: 1.技术发展方面: 自动化和智能化程度不断提高:未来码垛机器人将能够通过传感器、摄像头和人工智能等技术,更睛准地感知、分析和应对环境。它们将具备更强的自主决策能力,能够自适应不同的搬运需求和复杂的工作场景,并通过不断学习优化自身的操作。而且还会积累大量的运行数据,用于性能分析和优化操作流程,进一步提高生产效率和质量。 高速化发展:随着物流行业的快速发
发表于 11-16 17:49
•49次阅读
在广袤而复杂的自然环境中,输电通道作为电力输送的“生命线”,其安全与稳定至关重要。然而,山火等自然灾害的频发,给输电通道的安全运行带来了严峻挑战。为了有效应对这一难题,深圳特力康科技有限公司凭借其深厚的技术积累和创新能力,成功研发出了特力康输电线路防山火在线监测装置TLKS-PMG-DF,为输电通道的安全防护提供了强有力的技术支撑。 该装置集成了高清成像、智能图像分析、远程监控和即时报警等一系列先进技术,实现了对输
发表于 11-16 17:48
•45次阅读
而江苏省溧阳地区为低山地貌,植被覆盖度较高,滑坡规模小,受滑坡规模和植被覆盖影响,该地区滑坡地质灾害识别难度很大。溧阳地区滑坡多为小型,规模大多在500m2以下,如何应用LiDAR数据识别植被茂密区小型滑坡是本文研究的目标之一。 一、引言 遥感技术自20世纪兴起,在各行各业中应用颇为广泛,地质灾害调查与判别分析是遥感技术的重要应用领域。20世纪90年代,遥感技术主要通过卫星光学影像(以Landsat和SPOT为代表)开展大型工程中大型地质灾
发表于 11-16 17:45
•45次阅读
安科瑞鲁一扬15821697760 【摘要】: 大型公共建筑的传统照明系统往往依循用户的一般性需求予以设计,然而却极易忽视日光以及季节更迭对照明需求所产生的显著影响,由此导致照明能耗长期处于过高水平。鉴于此,本研究聚焦于绿色节能的视角,致力于对大型公共建筑的智能照明系统实施改进与优化。 首先,深入剖析天花板与工作面之间的日光照度映射关联,进而构建起一个精准的日光估计模型。通过严谨的训练阶段与操作阶段的有序推进,精准得
发表于 11-16 17:44
•54次阅读
机房精密空调电极式加湿罐维护:
1、定期检查精密空调电极式加湿罐的电极和密封圈,确保其完好无损。如有损坏,应及时更换。
2、定期清洗精密空调电极式加湿罐,确保其内部无杂质和污垢。清洗时,应使用专用的清洗剂,并按照说明书的要求进行操作。
3、定期检查精密空调电极式加湿罐的水位,确保其水位正常。如水位过低,应及时添加水。
4、定期检查精密空调电极式加湿罐的电源线,确保其完好无损。如有损坏,应及时更换。
发表于 11-16 17:42
•42次阅读
农田自动无线智能灌溉系统作为智慧农业的重点应用技术,正逐步改变着传统农业的面貌,其强大的功能作用和广泛的应用前景,提升农业生产效率,促进农业资源的合理利用,助力现代农业实现可持续发展。 工作原理 农田自动无线智能灌溉系统,集成物联网、无线通信、自动控制等多种技术,形成了一个高度智能化、自动化的智能灌溉解决方案。通过安装在农田中的各类传感器,如土壤湿度传感器、温度传感器、光照强度传感器等,实时监测农田环
发表于 11-16 17:37
•74次阅读
物联网智慧路灯的功能架构 单灯控制器
发表于 11-16 17:35
•80次阅读
大多数时候,在大多数应用中,变频驱动器通过为电机提供能量来控制电机,然后为负载提供动力。
发表于 11-16 17:33
•53次阅读
《200V 变 380V 变压器:叩开日本设备出口市场的关键之匙》 对于139电子2926设备3356制造商而言,拓展海外市场是实现企业规模化与国际化发展的必由之路。日本,作为电子科技高度发达且市场需求旺盛的国度,一直吸引着众多企业的目光。然而,其独特的 200V 工业用电标准,却如同一道难以逾越的技术鸿沟,横亘在众多欲出口 380V 设备的企业面前。而 200V 变 380V 变压器的出现,正成为攻克日本市场的得力助手,为设备出口业务注入强大动力。 一、日本市
发表于 11-16 17:32
•59次阅读
行业背景 压瓦机是一种用于压制各种瓦型金属板材的机械设备,其产品常见于各类钢结构、彩钢板房、厂房建设等,不仅具有良好的承重性能和防水性能,还能有效减少建筑成本和提高施工效率,能够满足日益个性化的建筑需求。 随着科技的不断发展,压瓦机的自动化程度越来越高,操作更加简便快捷,生产效率和产品质量更加稳定。其运行监控和生产管理系统越来越关系到企业的生产效益与市场竞争力。为了应对这一挑战,结合物联网(IoT)技术的
发表于 11-16 17:31
•77次阅读
行业背景 汽车制造业作为国民经济的支柱产业之一,具备能源消耗量巨大、且能源消耗结构复杂等特点。从原材料加工、零部件生产到整车装配,每一个环节都涉及大量的能源消耗,包括水、电、气、热等多种能源类型,而“双碳”目标和可持续性发展要求的持续推进,实现综合能源监测管理已成为汽车制造业实现数字化转型的必然要求。 痛点分析 1、能源各自计量,难以统一管理 由于各个环节的水、电、气、热等能源计量各自为营,总厂与分厂之间
发表于 11-16 17:27
•107次阅读
《解密设备出口美国之关键:卓尔凡 480V 变 220V 三相 UL 变压器》 在139电子2926设备3356全球化的浪潮中,美国市场无疑是众多企业竞相角逐的高地。然而,美国独特的电力标准体系,尤其是工业领域广泛采用的 480V 三相电压,与世界许多地区常用的 220V 标准形成鲜明对比,这给设备出口带来了巨大挑战。而卓尔凡电源推出的 480V 变 220V 三相 UL 变压器,宛如一把精准的钥匙,为解锁设备出口美国之路提供了核心密码,值得广大电子发烧友深入探究。 一、美
发表于 11-16 17:21
•72次阅读
当前装备保障信息化的道路仍面临诸多挑战。在物联网信息化层面,缺少流畅高效的网络平台,业务处理过于依赖单机操作,设备和信息的共享存在不少问题。此外,装备管理仍遵循传统的层级报告、审批、汇总及总部决策流程,尚未完全实现供应的精确化、管理的网络化和保障的可视化。因此,广州一芯未来提出:加快装备领域物联网技术的信息化发展,从而提高装备及物资管理的效率水平。这一举措对于BD的后勤保障及其全面性建设起着至关重要的作用。
发表于 11-16 17:18
•61次阅读
大型大坝水库水雨情安全监测预警系统它通过对水库的水位、雨量、流量等水雨情信息进行实时监测,能够及时掌握水库的运行状态,是保障大坝安全、应对洪水威胁的关键手段,为防洪决策提供准确的数据支持。
发表于 11-16 16:55
•57次阅读
评论