Java中的强引用,软引用,弱引用,虚引用的作用介绍

 更新时间:2022年02月18日 10:29:13   作者:孙中明  
这篇文章主要介绍了Java中的强引用,软引用,弱引用,虚引用的作用,下文内容具有一定的知识参考价值,需要的小伙伴可以参考一下,希望对你有所帮助

1.强引用( Strong Reference )

最普遍的引用:Object obj=new Object()
抛出OutOfMemoryError终止程序也不会回收具有强引用的对象
通过将对象设置为null来弱化引用,使其被回收

2.软引用( Soft Reference )

对象处在有用但非必须的状态
只有当内存空间不足时,GC会回收该引用的对象的内存
可以用来实现高速缓存

String str=new String( original: "abc"); //强引用
SoftReference<String> softRef=new SoftReference<String>(str);//软引用

3.弱引用( Weak Reference )

非必须的对象,比软引用更弱一些
GC时会被回
被回收的概率也不大,因为GC线程优先级比较低
适用于引用偶尔被使用且不影响垃圾收集的对象

string str=new String( original: "abc"y ;
weakReference<String> abcweakRef = new weakReference<String>(str);

4.虚引用( PhantomReference )

不会决定对象的生命周期
任何时候都可能被垃圾收集器回收
跟踪对象被垃圾收集器回收的活动,起哨兵作用必须和引用队
ReferenceQueue联合使用

String str=new String( original: "abc");
ReferenceQueue queue = new ReferenceQueue( ) ;
PhantomReference ref = new PhantomReference(str, queue);

5.强引用>软引用>弱引用>虚引用

到此这篇关于Java中的强引用,软引用,弱引用,虚引用的作用介绍的文章就介绍到这了,更多相关Java中的强引用,软引用,弱引用,虚引用的作用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot AOP处理请求日志打印功能代码实例

    SpringBoot AOP处理请求日志打印功能代码实例

    这篇文章主要介绍了SpringBoot AOP处理请求日志打印功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • JavaFx Tooltip悬浮提示使用及自定义代码详解

    JavaFx Tooltip悬浮提示使用及自定义代码详解

    本篇是基于TornadoFx框架对Tooltip组件进行讲解,使用Kotlin语言,和传统Java使用有所区别,本章节包括对tooltip的样式定制化以及指定窗口显示,对JavaFx Tooltip悬浮提示使用及自定义相关知识感兴趣的朋友一起看看吧
    2021-12-12
  • Java泛型<T> T与T的使用方法详解

    Java泛型<T> T与T的使用方法详解

    这篇文章主要介绍了Java泛型<T> T与T的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Mybatis模糊查询之三种定义参数方法和聚合查询、主键回填实现方法

    Mybatis模糊查询之三种定义参数方法和聚合查询、主键回填实现方法

    这篇文章主要介绍了Mybatis模糊查询之三种定义参数方法和聚合查询、主键回填实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • IDEA开启Run Dashboard的几种方式

    IDEA开启Run Dashboard的几种方式

    Run Dashboard 是 IntelliJ IDEA 中的一个工具窗口,用于管理和监视项目中正在运行的应用程序和配置,它提供了一种集中管理运行和调试过程的方式,本文给大家介绍了IDEA开启Run Dashboard的几种方式,需要的朋友可以参考下
    2024-03-03
  • Java中方法的使用、重载与递归的详细介绍

    Java中方法的使用、重载与递归的详细介绍

    前面我们提到了方法需要参数类型,但是如果我们需要用一个函数同时兼容多种参数的情况应该怎么办呢? 这里就可以使用到方法重载,对Java中方法的使用、重载与递归相关知识感兴趣的朋友一起看看吧
    2021-11-11
  • Spring IOC容器基于XML外部属性文件的Bean管理

    Spring IOC容器基于XML外部属性文件的Bean管理

    这篇文章主要为大家介绍了Spring IOC容器Bean管理XML外部属性文件,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 使用JAXBContext轻松实现Java和xml的互相转换方式

    使用JAXBContext轻松实现Java和xml的互相转换方式

    这篇文章主要介绍了依靠JAXBContext轻松实现Java和xml的互相转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java的线程池框架及线程池的原理

    java的线程池框架及线程池的原理

    这篇文章主要介绍了java的线程池框架及线程池的原理的相关资料,需要的朋友可以参考下
    2017-03-03
  • 一篇文章带你了解JAVA面对对象三大特征之封装

    一篇文章带你了解JAVA面对对象三大特征之封装

    所有的面向对象编程语言的思路都是差不多的,而这三大特性,则是思路中的支柱点,接下来我就重点讲解了一下java三大特性-封装,感兴趣的朋友跟随脚本之家小编一起看看吧
    2021-08-08

最新评论