当前位置: 首页 > news >正文

ThreadLocal原理以及内存泄露问题

1、ThreadLocal实现原理

1、每个线程中有一个ThreadLocalsMap,这是一个哈希表的结构里面有很多entry(也就是k-v),当我们使用ThreadLocal进行set值的时候,会将这个threadLocal设置为key,然后值设置为value放入ThreadLocalsMap,key为弱引用,value为强引用。

在这里插入图片描述

2、TheadLocal内存泄露问题

下面说一下ThreadLocal内存泄露的问题

前提:在栈中我们所有的实例都是堆中实际实例的引用

1、Entry只所以设置成弱引用,就是为了防止key也就是Threadlocal的引用丢失导致内存泄漏,设置成软引用就可以在GC时直接给回收掉。

2、当我们的ThreadLocal被回收掉后,那我们的Value还在内存中,如果是普通线程随着弹栈也就结束了没有问题,如果是线程池的话,这个Value就会一直堆积在内存中就导致了内存泄露。所以我们必须使用remove方法进行及时移除。

http://www.lryc.cn/news/226066.html

相关文章:

  • 值之字符串(string)
  • pytoch安装指定版本教程pytorch1.3安装笔记
  • k8s 裸金属集群部署metalLB软负载均衡 —— 筑梦之路
  • uni-app使用echarts数据不更新
  • 单挑特斯拉,华为智选车迈入第二阶段
  • acwing算法基础之搜索与图论--有向图的拓扑序列
  • Unity之NetCode多人网络游戏联机对战教程(7)--联机概念理解权威性Authority
  • Go并发编程(上)
  • MarkDown基础及表格、KaTeX公式、矩阵、流程图、UML图、甘特图语法
  • Citespace的使用
  • [模块]ES6与cjs的混合开发
  • git上传项目至github(Linux)
  • SSH 远程登录 WSL
  • 每天一道算法题:40. 组合总和 II
  • Centos7安装PostgreSQL 14
  • Shopee的折扣活动怎么分类?shopee设置折扣注意事项
  • 磁盘空间占用巨大的meta.db-wal文件缓存(tracker-miner-fs索引服务)彻底清除办法
  • 力扣:160. 相交链表(Python3)
  • 【华为OD机试AB高分必刷题目】无名的搜索题(Java-优先搜索(DFS)实现)
  • ant 任务(task)通过内嵌的arg元素传递命令行参数
  • STM32G0+EMW3080+阿里云飞燕平台实现单片机WiFi智能联网功能(三)STM32G0控制EMW3080实现IoT功能
  • IntelliJ IDEA - Git Commit 后 Commit 窗口不消失解决方案
  • Vue 组件化编程 和 生命周期
  • 《数字图像处理-OpenCV/Python》连载(41)图像的旋转
  • 案例 - 拖拽上传文件,生成缩略图
  • PHP 使用递归方式 将其二维数组整合为层级树 其中层级id 为一个uuid的格式 造成的诡异问题 已解决
  • rv1126-rv1109-添加分区,定制固件,开机挂载功能
  • 一台电脑使用多个gitee账号,以及提交忽略部分文件
  • 解析邮件文本内容; Mime文本解析; MimeStreamParser; multipart解析
  • 获取请求IP以及IP解析成省份