【JVM篇】ThreadLocal中为什么要使用弱引用


在这里插入图片描述

🍔ThreadLocal中为什么要使用弱引用

ThreadLocal可以在线程中存放线程的本地变量,保证数据的线程安全
在这里插入图片描述
ThreadLocal是这样子保存对象的:

  1. 在每个线程中,存放了一个ThreadLocalMap对象,本质上就是一个数组实现的哈希表,里面存放多个Entry对象
  2. 每个Entry对象继承自弱引用,内部存放ThreadLocal对象,同时用强引用,引用保存的ThreadLocal对应的value值
    在这里插入图片描述
    下面我们以代码为例

在这里插入图片描述
下面我们可以使用get方法,看看刚才保存的value值能不能获取到
在这里插入图片描述


当我们不使用ThreadLocal对象的时候,threadlocal=null;由于是弱引用,那么在垃圾回收后,ThreadLocal对象可以被回收

在这里插入图片描述
这就体现了弱引用的好处:
在垃圾回收的过程中,假设这个东西只有弱引用关联,那么这个对象是可以被回收的,所以尽管它还在被线程的ThreadLocalMap引用着,它依然可以正常的回收掉。
相反的,如果我们没有使用弱引用,使用了强引用,在我们允许完这段代码后,这个threadlocal仍然不能被回收,这样就造成了内存泄漏问题

但是现在,这个Entry对象和value对象能不能被回收呢?显然是不行的。 因为我们通过ThreadLocal的数组,还是有一个强引用关联到了Entry对象和value值,那么我们可以这么去除掉这一部分数据呢?
在ThreadLocal不再使用的时候,调用remove方法将Entry对象的引用关系去掉,这样子就可以回收掉这2个对象了
在这里插入图片描述

⭐总结

在这里插入图片描述

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

在这里插入图片描述

相关推荐

  1. Android 为什么使用 Binder 机制?

    2024-02-13 10:20:06       37 阅读
  2. 为什么在 Golang 使用指针

    2024-02-13 10:20:06       39 阅读
  3. 文章告诉你为什么使用MybatisPlus框架

    2024-02-13 10:20:06       55 阅读
  4. 为什么使用ElasticSearch?

    2024-02-13 10:20:06       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-13 10:20:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-13 10:20:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-13 10:20:06       82 阅读
  4. Python语言-面向对象

    2024-02-13 10:20:06       91 阅读

热门阅读

  1. 存储过程的优点

    2024-02-13 10:20:06       42 阅读
  2. 学习数据结构和算法的第8天

    2024-02-13 10:20:06       49 阅读
  3. 软件开发方式的改变

    2024-02-13 10:20:06       48 阅读
  4. Linux 常用的命令

    2024-02-13 10:20:06       51 阅读
  5. 函数高级(C++)

    2024-02-13 10:20:06       52 阅读
  6. 2024/2/12 图的基础知识 2

    2024-02-13 10:20:06       62 阅读
  7. 如何用 docker 部署程序?

    2024-02-13 10:20:06       63 阅读
  8. Junit常用断言

    2024-02-13 10:20:06       51 阅读
  9. 2.12作业

    2024-02-13 10:20:06       46 阅读
  10. 记录 | C++ cout.setf(ios::fixed)

    2024-02-13 10:20:06       53 阅读