JAVA中的引用

本文深入探讨Java中的四种引用类型:强引用、软引用、弱引用和虚引用的特点及应用场景。解析每种引用如何帮助开发者更好地管理内存,以及它们在垃圾回收机制中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

Java是强类型语言,强类型语言也就是强制数据类型定义的语言。

Java中的数据类型分为两类:

    基本数据类型(Primitive Type) :byte、short、int、long、float、double、char、boolean,共八种。

    引用数据类型(Reference Type):类、接口、数组,只要不是基本数据类型的八种,以外的都是属于引用数据类型的。

JAVA中提供了四种引用类型:强引用、软引用、软引用和虚引用。在四种引用类型中,只有强引用FinalReference类型变量是包内可见的,其他三种引用类型均为public,可以在程序中直接使用。

  1. 强引用:只要某个对象与强引用关联,那么JVM在内存不足的情况下,宁愿抛出outOfMemoryError错误,也不会回收此类对象    
  2. 软引用:JVM只会在内存不足的情况下回收该对象
  3. 弱引用:当JVM在进行垃圾回收时,无论内存是否充足,都会回收此类对象
  4. 虚引用:虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收。虚引用必须要和 ReferenceQueue 引用队列一起使用,当垃圾回收器准备回收一个对象时,如果发现它与虚引用关联,就会在回收它之前,将这个虚引用加入到引用队列中。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被回收,如果确实要被回收,就可以做一些回收之前的收尾工作

 

二、为什么有它?解决了什么问题?

  • 实现特定的引用类型,支持不同功能

  • 使用者可以在对象被回收后得到通知

  • 使用者可以自定义回收,进行非GC回收的资源释放 

三、它的数据结构?

 

四、它使用的算法?

1.空间复杂度

2.时间复杂度

五、它的设计模式?

六、它的源码及JVM底层实现原理?

https://www.jianshu.com/p/7ff38dfbb5a8

七、它的应用场景?

八、它的性能?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值