当前位置: 首页 > 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/a/148128.html

相关文章:

  • Keil基于ARM Compiler 5的工程迁移为ARM Compiler 6的工程
  • CSP/信奥赛C++语法基础刷题训练(8):洛谷P5718:找最小值
  • (六)Spark大数据开发实战:豆瓣电影数据处理与分析(scala版)
  • Go语言 实现将中文转化为拼音
  • linux设置主机名
  • FreeRTOS学习13——任务相关API函数
  • 【数据库】基于排序算法的去重,集合与包的并,差,交,连接操作实现原理,执行代价以及优化
  • 短视频账号矩阵系统开发--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图像字符检测识别系统