(Java基础篇)六、Java理解强引用和弱引用,以及ThreadLocal的value是强引用的原因

强引用和弱引用

  强引用和弱引用主要区别在于什么时候被垃圾回收,强引用就是我们最常使用的类型,在垃圾回收的时候,如果一个对象仅仅存在它的弱引用,那么它会被无情的回收掉。

Integer key = 666; // 强引用
WeakReference<Integer> value = new WeakReference<>(888); // 弱引用
// 另外,Integer内部IntegerCache保留了-128~127的强引用

System.gc();
// 此时key还是666  但是value = null

  在上一节中的源码深入,我发现ThreadLocalMap的key是弱引用,但是value却是个强引用,当时没想明白就没写了,现在想明白了。

static class Entry extends WeakReference<ThreadLocal<?>> {
   
    /** The value associated with this ThreadLocal. */
    Object value;
 
    Entry
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值