系列七、ThreadLocal为什么会导致内存泄漏

一、ThreadLocal为什么会导致内存泄露

1.1、ThreadLocalMap的基本结构

        ThreadLocalMap是ThreadLocal的内部类,没有实现Map接口,用独立的方式实现了Map的功能,其内部的Entry也是独立实现的。源码如下:

1.2、ThreadLocal引用示意图

1.3、原因

        ThreadLocalMap使用ThreadLocal的弱引用作为key,当ThreadLocal的变量引用被手动置位null的时候,即一个ThreadLocal没有外部强引用来引用它,当GC回收垃圾时,ThreadLocal一定会被回收掉,这样的话,ThreadLocalMap中就出现了key为null的Entry,这样的话线程就无法访问这个key为null的Entry中的value,如果当前线程再迟迟不结束的话(比如核心线程),这些key为null的Entry的value就会一直存在一条强引用链,即:Thread ref===>Thread obj===>ThreadLocalMap obj===>Entry===>value===>Object obj,当大量的这种强引用链存在时,就会导致内存溢出,即内存泄露最终会导致内存溢出。

1.4、解决

程序员在编码过程中 ,注意使用ThreadLocal时,要进行手动remove;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/208741.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十多位老铁在公司搭建好了测试平台

保守估计,目前有十多位小伙伴在公司搭建好了。 现在稍微详细的讲一下其中测试计划的使用说明: (图片有点小,可以点击扩大查看) 1、进入测试计划模块,点击“添加”,如下图5.1: ▲图 5…

Sentinel 授权规则 (AuthorityRule)

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 SpringbootDubboNacos 集成 Sentinel&…

HTTP四大参数类型及请求参数的方式和如何接收

HTTP 请求中4大参数类型和接收方法。 1、请求头参数head 请求头参数顾名思义,是存放在请求头中发送给服务器的参数,服务器通过解析请求头获取参数内容。通常会存放本次请求的基本设置,以帮助服务器理解并解析本次请求的body体。 参数形式如…

SUDS: Scalable Urban Dynamic Scenes

SUDS: Scalable Urban Dynamic Scenes:可扩展的城市动态场景 创新点 1.将场景分解为三个单独的哈希表数据结构,以高效地编码静态、动态和远场辐射场 2.利用无标签的目标信号,包括RGB图像、稀疏LiDAR、现成的自监督2D描述符,以及…

万字解析设计模式之组合模式、亨元模式

一、组合模式 1.1概述 组合模式是一种结构型设计模式,它允许将对象组合成树形结构,以表示“部分-整体”的层次结构。组合模式使得客户端可以一致地对待单个对象和对象组合,从而将复杂的层次结构展现为一个统一的树形结构。 在组合模式中&…

跨越行业边界,CodeMeter护航AI领域安全与合规

在人工智能(AI)技术如ChatGPT的推动下,工业视觉、医疗诊断和智能驾驶等领域正在经历重大变革。这些技术不仅扩大了应用范围,也带来了数据安全、软件授权保护和合规性等新挑战。 AI工业视觉正在推动制造和自动化的快速发展&#x…

图形编辑器开发:自定义光标管理

大家好,我是前端西瓜哥。 今天来讲讲如何在图形编辑器中使用自定义光标,并对光标其进行管理。 编辑器 github 地址: https://github.com/F-star/suika 线上体验: https://blog.fstars.wang/app/suika/ 自定义光标的意义是什么&am…

基于爬行动物算法优化概率神经网络PNN的分类预测 - 附代码

基于爬行动物算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于爬行动物算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于爬行动物优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

Matlab进阶绘图第33期—双曲面图

在《Matlab论文插图绘制模板第56期—曲面图(Surf)》中,我分享过曲面图的绘制模板。 然而,有的时候,需要在一张图上绘制两个及以上的曲面图,且每个曲面图使用不同的配色方案。 在Matlab中,一张…

优先经验回放(prioritized experience replay)

prioritized experience replay 思路 优先经验回放出自ICLR 2016的论文《prioritized experience replay》。 prioritized experience replay的作者们认为,按照一定的优先级来对经验回放池中的样本采样,相比于随机均匀的从经验回放池中采样的效率更高&…

vue3组件化开发页面之渲染函数实现

文章目录 前言一、渲染机制虚拟 DOM渲染管线 二、渲染函数基本用法声明渲染函数Vnodes 必须唯一 三、页面使用渲染函数及组件配置总结如有启发,可点赞收藏哟~ 前言 组件化开发是目前开发的常态 本文记录页面拆分多个不同组件模块,然后再基于渲染函数实现…

const修饰

const 起保护作用,禁止修改。 此时a变为常量,常量不可修改。 const放在*p的左端限制*p,即不能通过修改指针变量(*p)的值来修改p指向空间的内容,但p不受限制。 const放在*的右端限制p,即不能修…