java引用类型(笔记)

引用于对象

在java中一切存在都视为对象,但是我们实际操作的是对象的一个引用。

User u ; //创建一个引用

u = new User(); //将这个引用指向一个对象,就可以通过引用来操作对象

四种引用类型

在JDK1.2之后,java扩充了引用的概念,将引用分为了四种:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)4 种,这 4 种引用的强度依次减弱。

强引用

我们平常使用的应用就是强引用,其特点是:
只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,而不会去回收。想要使被引用的对象能被回收,需要手动的将引用赋值为null,这样之前被引用的对象就可以被JVM回收了。

软引用

软引用是用来描述一些非必需但仍有用的对象,其特点:
在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。
其声明方法:

SoftReference<User> u = new User(); //创建一个软引用指向对象
弱引用

弱引用的引用强度比软引用要更弱,无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收。

WeakReference<User> u = new User(); //创建一个弱引用指向对象
虚引用

虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收。

引用队列

引用队列(ReferenceQueue)可以与软引用、弱引用以及虚引用一起配合使用,当垃圾回收器准备回收一个对象时,如果发现它还有引用,那么就会在回收对象之前,把这个引用加入到与之关联的引用队列中去。程序可以通过判断引用队列中是否已经加入了引用,来判断被引用的对象是否将要被垃圾回收,这样就可以在对象被回收之前采取一些必要的措施。其中虚引用必须和引用队列一起使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值