Java对象的引用方式(强引用, 软引用, 弱引用, 虚引用)

1, 强引用:

特点:
  (1)强引用可以直接访问对象
  (2)强引用所指的对象, 在任何时候都不会被系统回收, 虚拟机宁愿抛出OOM异常, 也不会回收强引用的对象
  (3)强引用可能导致内存泄漏
 --例: User user1 = new User(); User user2=user1; 此时user1和user2都属于强引用

2, 软引用:(可被回收的引用)

特点:(通过java.langref.SoftReference类实现)
  (1)比强引用要弱一些, GC未必会回收软引用的对象, 但是当内存资源紧张时, 软引用的对象就会被回收, 因此软引用不会引起内存溢出

3, 弱引用:(发现即回收)

特点: (可通过java.lang.ref.WeakReference类实现)
  (1)比软引用更弱的一种引用,在系统GC时, 无论系统堆使用情况如何, 一但发现弱引用对象就会将其回收,ThreadLocal就是基于弱引用实现的

4, 虚引用:(对象回收跟踪)

特点: (可通过java.lang.ref.PhantomReference类实现)
  (1)引用类型中最弱的, 跟没有引用几乎是一样的
  (2)虚引用必须和引用队列一起, 它的作用的是跟踪垃圾回收过程(TraceCanReliveObj, ReferenceQueue)

注: 软引用和弱引用都非常适合保存那些可有可无的缓存数据, 这样在系统内存不足的时候, 这些缓存数据就会被回收, 不会导致内存溢出, 反之当系统内存充足时, 又可常驻内存中, 起到加速系统的作用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值