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

什么是ThreadLocal以及内存泄漏问题、hash冲突问题

ThreadLocal是什么

ThreadLocal类用来提供线程内部的局部变量
它主要有三大特性:

  • 线程安全: 在多线程并发的场景下保证线程安全
  • 传递数据:通过ThreadLocal在同一线程传递公共变量
  • 线程隔离:每个线程的变量都是独立的,不会互相影响

ThreadLocal使用场景

  • Spring的事务

ThreadLocal 内存泄漏是怎么产生的

(1) 内存泄漏
内存溢出:没有足够的内存提供申请者使用。
内存泄漏:内存泄漏是指已经动态分配的堆内存由于某种程序原因未释放或无法释放,造成系统内存的浪费。

(2) 弱引用
弱引用:垃圾回收器一旦发现了有弱引用,不管当前内存足够与否,都会回收它的内存。

内存泄漏原因:由于ThreadLocalMap的生命周期跟Thread一样长,如果没有手动删除对应key就会导致内存泄漏

ThreadLocal怎么解决内存泄漏

1.使用完ThreadLocal,调用其remove方法删除对应的Entry
2.使用完ThreadLocal,当前Thread也随之运行结束

ThreadLocal的hash冲突怎么解决

ThreadLocal采用线性探测法来解决hash冲突
该方法一次探测下一个地址,直到有空的地址后插入,若整个空间都找不到空余的地址,则产生溢出

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

相关文章:

  • 从零开始做题:My_lllp
  • 如何编译ffmpeg支持h265(hevc)?
  • UNIAPP_顶部导航栏右侧添加uni-icons图标,并绑定点击事件,自定义导航栏右侧图标
  • Redis原理-数据结构
  • 计算机网络 - 万字长文
  • 基于java+springboot+vue实现的仓库管理系统(文末源码+lw+ppt)23-499
  • 网络安全概述
  • Java传引用问题
  • P8086 『JROI-5』Music
  • 【Java]认识泛型
  • git要忽略对文件的本地修改
  • Linux学习笔记(三)文件权限
  • 自定义类TMyLabel继承自QLabel ,实现mouseDoubleClickEvent
  • 逻辑回归模型(非回归问题,而是分类问题)
  • qt hasPendingDatagrams() 函数
  • 数据结构第08小节:双端队列
  • Python骨架肌体运动学数学模型
  • 二叉树的序列化和反序列化(Java)
  • Java中的泛型类
  • 57、Flink 的项目配置概述
  • 零基础自学爬虫技术该从哪里入手?
  • Vue.js 基础入门指南
  • 山泰科技集团陈玉东:争当数字化时代的知识产权卫士
  • WBCE CMS v1.5.2 远程命令执行漏洞(CVE-2022-25099)
  • 鸿蒙语言基础类库:【@ohos.url (URL字符串解析)】
  • 【AutoencoderKL】基于stable-diffusion-v1.4的vae对图像重构
  • 《警世贤文》摘抄:守法篇、惜时篇、修性篇、修身篇、待人篇、防人篇(建议多读书、多看报、少吃零食多睡觉)
  • vue2+element-ui新增编辑表格+删除行
  • Day05-组织架构-角色管理
  • 【LLM】二、python调用本地的ollama部署的大模型