Java引用的强度

4个级别:强引用、软引用、弱引用、虚引用。

1.强引用

建立方式: A  a = new A; 

                   A b =a;   用=号直接赋值。

无论如何都不会被系统回收

强引用可能导致内存泄漏。

2.软引用

建立方式: User u = new User();

                  SoftReference<User> userSoftRef = new SoftReference<>(u);

                   u=null;                               通过SoftReference类建立。

当内存资源紧张时,才会被回收,因此不会引起内存溢出。

可以配合引用队列使用,被回收时加入队列,用于跟踪对象回收情况。

3.弱引用

建立方式: User u = new User();

                  WeakReference<User> userSoftRef = new WeakReference<>(u);

                   u=null;                               通过WeakReference类建立。

建立方式: User u = new User();

                  PhantomReference<User> userSoftRef = new PhantomReference<>(u,queue);

                   u=null;                               通过PhantomReference类建立。

系统gc时,只要发现弱引用,就会进行回收。但由于垃圾回收器的线程优先级较低,并不一定能很块的发现持有弱引用的对象,因此弱引用也有可能存活较长时间。

可以配合引用队列使用,被回收时加入队列,用于跟踪对象回收情况。

4.虚引用

几乎和没有引用一样,且必须和引用队列一起用。作用在于跟踪垃圾回收进程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值