java基础之引用及ThreadLocal(一)

本文深入探讨了JAVA中的四种引用类型:强引用、软引用、弱引用和虚引用。强引用是常规的引用,不会被GC回收除非对象孤立。软引用常用于缓存,内存不足时会被回收。弱引用在GC执行时即回收,如ThreadLocal。虚引用则用于堆外内存管理,回收后通知操作系统。了解这些引用类型有助于优化内存使用和防止内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA引用类型

引用类型备注使用场景
强引用没有其它对象指向,会被回收普通场景
软引用new SoftReference<>(),如果内存不足,垃圾回收器就会将他回收用于缓存
弱引用new WeakReference<>(),垃圾回收器执行就会回收ThreadLocal
虚引用new PhantReference<>(),创建一下虚引用的对象,它需要一个队列,当虚引用执行的对象回收后,虚引用对应队列的位置会打一个标记,让jvm回收时,告诉操作系统取回收堆外内存堆外内存

 TheadLocal

 使用场景:

1.复杂的参数传递
2.事务处理:保证同一个线程使用相同的连接

结构

类似于大key(线程id) + 小key(this, 指向TheadLocal对象,弱引用) + value(存储的值)

        ThreadLocal<String> tl = new ThreadLocal<>();
        tl.set("mingji"); //设置value
        tl.remove(); //先删除value的值,不然会导致内存泄漏
        tl = null; //设置变量为null,这样key对应的对象才能被删除

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值