Java的四种引用之强弱软虚

Posted zwbg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 虚引用----对象回收跟踪

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

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

 

以上是关于Java的四种引用之强弱软虚的主要内容,如果未能解决你的问题,请参考以下文章

Java的四种引用 -强弱软虚

java的四种引用,强弱软虚

java的四种引用,强弱软虚和jvm优化

Java的四种引用,强弱软虚,用到的场景

java-----四种引用

java 强弱软虚 四种引用,以及用到的场景