java 强 软 弱 虚_Java的四种引用之强弱软虚

在java中提供4个级别的引用:强引用、软引用、弱引用和虚引用。除了强引用外,其他3中引用均可以在java.lang.ref包中找到对应的类。开发人员可以在应用程序中直接使用他们,其中FinalReference意味着“最终”引用,它用以实现对象的finalize()方法。

1 强引用

强引用就是程序中一般使用的引用类型,强引用的对象是可触及的,不会被回收。相对的,软引用、弱引用和虚引用的对象是软可触及的、弱可触及的和虚可触及的,在一定条件下,都是可以被回收的。

强引用示例:StringBuffer sb = new StringBuffer("Hello world");

假设以上代码是在函数体内运行的,那么局部变量sb将被分配在栈上,而对象StringBuffer实例被分配在堆上。局部变量sb指向StringBuffer实例所在堆空间,通过sb可以操作该实例,那么sb就是StringBuffer实例的强引用。

强引用的特点:

强引用可以直接访问目标对象

强引用所指向的对象在任何时候都不会被系统回收,虚拟机宁愿抛出OOM异常,也不会回收强引用所指的对象。

强引用可能导致内存泄漏

2 软引用----可被回收的引用

软引用是比强引用弱一点的引用类型,一个对象只持有软引用,那么当堆空间不足时,就会被回收。软引用使用java.lang.ref.SoftReference类型

特点:

GC未必会回收软引用的对象,但是当内存资源紧张时,软引用对象会被回收,所以软引用对象不会引起内存溢出。

3 弱引用-----发现即回收

4 虚引用----对象回收跟踪

一个持有虚引用的对象,和没有引用几乎一样。

它的作用主要是跟踪垃圾回收过程

原文:http://www.cnblogs.com/zwbg/p/6196000.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值