浅谈Java 中的引用类型

 更新时间:2020年02月10日 08:47:22   作者:Oaki  
Java开发者肯定都很熟悉java中的4种引用类型,它们从强到弱分别是:强引用、软引用、弱引用和虚引用,下面我们详细看看这些引用类型

Java 中的引用类型:强引用、软引用、弱引用和虚引用

强引用

如 Object object = new Object(),那 object 就是一个强引用,如果一个对象具有强引用,垃圾回收器就永远不会回收它。

软引用

软引用用来描述一些还有用但非必需的对象。在内存即将发生内存溢出之前,会把这些对象列进回收范围之中进行二次垃圾回收。如果这次回收还没有足够内存,才会发生内存溢出现象。

另:软引用可用来实现内存敏感的高速缓存。

弱引用

用来描述非必需的对象。被弱引用关联的对象只能存活到下一次垃圾收集发生之前。当垃圾回收时,无论当前内存是否足够,都将回收被弱引用关联的对象。

虚引用

最弱的一种引用关系。无法通过一个虚引用获得一个对象实例;一个对象是否有虚引用,都不会对其生存周期构成影响。

设置虚引用的唯一目的是在垃圾回收时收到一个系统通知。

虚引用与软引用、弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,会在垃圾回收之前,将该引用加入到与之对应关联的引用队列中。程序通过判断引用队列中是否已经加入了该虚引用,来了解被引用的对象是否将被垃圾回收。程序如果已经发现该虚引用被加入了引用队列中,就会将所引用的对象的内存被回收之前采取必要的行动。

软引用、弱引用的使用场景原理分析:实现内存敏感的高速缓存。

相关文章

  • Java深入了解数据结构之栈与队列的详解

    Java深入了解数据结构之栈与队列的详解

    这篇文章主要介绍了Java数据结构中的栈与队列,在Java的时候,对于栈与队列的应用需要熟练的掌握,这样才能够确保Java学习时候能够有扎实的基础能力。本文小编就来详细说说Java中的栈与队列,需要的朋友可以参考一下
    2022-01-01
  • Java自定义异常简单示例

    Java自定义异常简单示例

    使用Java内置的异常类可以描述在编程时出现的大部分异常情况,除此之外用户还可以自定义异常,下面这篇文章主要给大家介绍了关于Java自定义异常的相关资料,需要的朋友可以参考下
    2023-04-04
  • Java异常之图书管理系统

    Java异常之图书管理系统

    这篇文章主要为大家详细介绍了Java异常之图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Java蓝桥杯实现线段和点

    Java蓝桥杯实现线段和点

    本文主要介绍Java蓝桥杯实现线段和点的内容,感兴趣的小伙伴可以参考下文
    2021-08-08
  • JVM:你知道为什么对象一定在堆中分配吗

    JVM:你知道为什么对象一定在堆中分配吗

    这篇文章主要介绍了jvm对象的创建和分配的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下,希望能够给你带来帮助
    2021-08-08
  • idea不能自动补全yml配置文件的原因分析

    idea不能自动补全yml配置文件的原因分析

    这篇文章主要介绍了idea不能自动补全yml配置文件的原因,通过添加yml文件为配置文件能够很快的解决,具体解决步骤跟随小编一起通过本文学习下吧
    2021-06-06
  • 详解JAVA 函数式编程

    详解JAVA 函数式编程

    这篇文章主要介绍了JAVA 函数式编程的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • MyBatis-Plus中AutoGenerator的使用案例

    MyBatis-Plus中AutoGenerator的使用案例

    AutoGenerator是MyBatis-Plus的代码生成器,通过 AutoGenerator 可以快速生成 Pojo、Mapper、 Mapper XML、Service、Controller 等各个模块的代码,这篇文章主要介绍了MyBatis-Plus中AutoGenerator的详细使用案例,需要的朋友可以参考下
    2023-05-05
  • java正则表达式验证工具类

    java正则表达式验证工具类

    这篇文章主要介绍了java正则表达式验证工具类,可以校验电话号码,身份证号码,日期格式,URL,email等等,需要的小伙伴参考下吧。
    2015-03-03
  • SpringBoot 整合 Netty 多端口监听的操作方法

    SpringBoot 整合 Netty 多端口监听的操作方法

    Netty提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架,这篇文章主要介绍了SpringBoot 整和 Netty 并监听多端口,需要的朋友可以参考下
    2023-10-10

最新评论