JUC面试——⭐⭐Java中的四种引用类型/Threadlocal

四种引用类型

Java 中对象的引用分为四种级别,这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。

基础知识

强引用:普通使用的引用

强引用是造成 Java 内存泄漏的主要原因之一

软引用:

GC内存不够时回收

适用于:当缓存使用

弱引用⭐(面试问的最多):遇到GC就会回收

弱引用 -> ThreadLocal

弱引用:解决某些地方的内存泄露问题

虚引用:直接回收,和没有一样

虚引用的作用:当某个对象被回收时,会发一个通知,知道这个对象被回收了

软引用/弱引用通过 get() 方法可以拿到这个引用的值,但虚引用拿不到这个值

queue 监测:有没有虚引用被回收,并通知

用途:管理堆外内存

JVM:只能通过 gc 管理自己的内存,不能管理不属于自己的内存 

虚引用指向 DirectByteBuffer 时,任何一个对象被回收时,通过监测 Queue 里面有没有对象,知道该对象被清理后要不要清理堆外内存。仍然是 JVM 通过 gc 清理堆外内存。

Threadlocal

threadlocal 结合线程池可以做很多很多东西

threadlocals 可能是从线程池里面拿取的,因此最好养成好习惯,用完 threadlocals 就把它 remove 掉

threadlocal 中的 entry 是一个弱引用

通过 threadlocal工具类 找到 thread ,修改 threadlocalmap 的值

 

 

 

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值