码迷,mamicode.com
首页 > 编程语言 > 详细

Java的四种引用之强弱软虚

时间:2016-12-19 08:07:17      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:使用   弱引用   对象回收   对象   hello   oom   bsp   开发   nbsp   

 在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 虚引用----对象回收跟踪

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

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

 

Java的四种引用之强弱软虚

标签:使用   弱引用   对象回收   对象   hello   oom   bsp   开发   nbsp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!