java 中都有哪些引用类型?

java中的引用类型如下:

(1)强引用
Java中默认声明的就是强引用,比如:

Object obj = new Object();
obj = null;

只要强引用存在,垃圾回收器将永远不会回收被引用的对象。如果想被回收,可以将对象置为null;

(2)软引用(SoftReference)
在内存足够的时候,软引用不会被回收,只有在内存不足时,系统才会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会跑出内存溢出异常。

byte[] buff = new byte[1024 * 1024];
SoftReference<byte[]> sr = new SoftReference<>(buff);

(3)弱引用(WeakReference)
进行垃圾回收时,弱引用就会被回收。

(4)虚引用(PhantomReference)

(5)引用队列(ReferenceQueue)

  • 引用队列可以与软引用、弱引用、虚引用一起配合使用。
  • 当垃圾回收器准备回收一个对象时,如果发现它还有引用,就会在回收对象之前,把这个引用加入到引用队列中。
  • 程序可以通过判断引用队列中是否加入了引用,来判断被引用的对象是否将要被垃圾回收,这样可以在对象被回收之前采取一些必要的措施。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、值类型与引用类型 1、变量初始化 2、变量赋值 从上图可以显而易见,num是int基本类型变量,值就直接保存在...
    轝巐阅读 2,905评论 0 1
  • 导读 移动开发知识体系总章(Java基础、Android、Flutter) 基本数据类型 引用类型 强引用(Fin...
    彭空空阅读 9,507评论 0 3
  • java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象 jav...
    千手雨阅读 3,427评论 0 0
  • 引用与对象 每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是...
    Java盘鱼宴阅读 3,085评论 0 1
  • 概念 每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过“...
    不学不知道阅读 1,369评论 0 0

友情链接更多精彩内容