zoukankan      html  css  js  c++  java
  • ThreadLocal为什么不用强引用

    那为什么使用弱引用而不是强引用??

    我们看看Key使用的

    key 使用强引用

    当hreadLocalMap的key为强引用回收ThreadLocal时,因为ThreadLocalMap还持有ThreadLocal的强引用,如果没有手动删除,ThreadLocal不会被回收,导致Entry内存泄漏。 譬如  设置:ThreadLocal=null  以后,应该会被回收的,但实际情况是ThreadLocalMap还有一个强引用,导致无法回收

    key 使用弱引用

    当ThreadLocalMap的key为弱引用回收ThreadLocal时,由于ThreadLocalMap持有ThreadLocal的弱引用,即使没有手动删除,ThreadLocal也会被回收。当key为null,在下一次ThreadLocalMap调用set(),get(),remove()方法的时候会被清除value值。

    譬如  设置:ThreadLocal=null  以后,强引用已没有,ThreadLocalMap还有一个弱引用,下次GC就会被回收

  • 相关阅读:
    docker网络
    docker-registry搭建
    JDK1.8源码安装
    docker-compose应用
    docker-compose介绍
    docker commit
    CMD/ENTROYPOINT区别
    第一个dockerfile
    SpringBoot整合Mybatis对单表的增、删、改、查操作
    向上取整、向下取整
  • 原文地址:https://www.cnblogs.com/tiancai/p/13026434.html
Copyright © 2011-2022 走看看