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

系列八、key是弱引用,gc垃圾回收时会影响ThreadLocal正常工作吗

一、key是弱引用,gc垃圾回收时会影响ThreadLocal正常工作吗

        到这里,有些小伙伴可能有疑问,ThreadLocalMapkey既然是 弱引用,那么GC时会不会贸然地把key回收掉,进而影响ThreadLocal的正常使用呢?答案是不会影响ThreadLocal的正常工作的。原因如下,虽然ThreadLocalMap的Entry的key是一个弱引用(key为ThreadLocal),但是栈中还有ThreadLocal ref在引用着ThreadLocal,如下所示:

 

二、代码证明

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/22 14:36
 * @Description: 证明gc时不会回收ThreadLocalMap的弱引用(除非手动将变量设置为null)
 */
public class ThreadLocalWeaknessMainApp {

    public static void main(String[] args) {
        Object obj = new Object();
        WeakReference<Object> weakReference = new WeakReference<>(obj);
        System.out.println("GC回收之前:" + weakReference.get());
        System.gc();
        System.out.println("GC回收之后:" + weakReference.get());
        obj = null;
        System.gc();
        System.out.println("对象设置为null,GC回收之后:" + weakReference.get());
    }

}


http://www.kler.cn/news/148128.html

相关文章:

  • 【数据库】基于排序算法的去重,集合与包的并,差,交,连接操作实现原理,执行代价以及优化
  • 短视频账号矩阵系统开发--saas源头技术开发(手机版)
  • 数据中台之核心调度模块的设计
  • [pyqt5]pyqt5设置窗口背景图片后上面所有图片都会变成和背景图片一样
  • 同旺科技 USB 转 RS-485 适配器
  • Vue实现封装自定义指令
  • ROC及曲线面积汇总学习
  • 数据库数据恢复—MongoDB数据库文件拷贝出现错误的数据恢复案例
  • 第四十四天|518. 零钱兑换 II 377. 组合总和 Ⅳ
  • P9231 [蓝桥杯 2023 省 A] 平方差(拆分问题)
  • 一. BEV感知算法介绍
  • 小白必知:AIGC 和 ChatGPT 的区别
  • ESP32-Web-Server编程-JS 基础 1
  • YOLOv8 训练自己的分割数据集
  • Mysql的二阶段提交
  • linux系统基线配置相关
  • C语言公交车之谜(ZZULIOJ1232:公交车之谜)
  • 青云科技容器平台与星辰天合存储产品完成兼容性互认证
  • hive总结
  • 深度学习之基于百度飞桨PaddleOCR图像字符检测识别系统
  • 基于C#实现十字链表
  • ESP32-Web-Server编程-建立第一个网页
  • 从家暴谈中国女性在社会中的艰难处境
  • 【Rust】所有权的认识
  • 【VROC】看Intel VROC如何给NVMe SSD做RAID
  • Vue3-VueRouter4路由语法解析
  • 小程序如何禁止指定用户访问?如何设置指定用户才能访问?
  • FreeSQL 基本使用
  • C#,《小白学程序》第五课:队列(Queue)其一,排队的技术与算法
  • Docker Compose;docker-compose;docker compose