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中的强引用,软引用,弱引用,虚引用的作用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java8 日期、时间操作代码

    Java8 日期、时间操作代码

    在Java8之前,日期时间API一直被开发者诟病,包括:java.util.Date是可变类型,SimpleDateFormat非线程安全等问题。故此,Java8引入了一套全新的日期时间处理API,新的API基于ISO标准日历系统
    2021-09-09
  • SpringBoot集成和使用RabbitMQ方式

    SpringBoot集成和使用RabbitMQ方式

    本文介绍了如何在SpringBoot项目中集成RabbitMQ,并结合死信队列实现延时消息,通过这些配置和机制,开发者可以在分布式系统中构建更为灵活和可靠的消息传递系统
    2024-12-12
  • 应用Java泛型和反射导出CSV文件的方法

    应用Java泛型和反射导出CSV文件的方法

    这篇文章主要介绍了应用Java泛型和反射导出CSV文件的方法,通过一个自定义函数结合泛型与反射的应用实现导出CSV文件的功能,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • 解决spring cloud gateway 获取body内容并修改的问题

    解决spring cloud gateway 获取body内容并修改的问题

    这篇文章主要介绍了解决spring cloud gateway 获取body内容并修改的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Spring MVC 文件上传下载的实例

    Spring MVC 文件上传下载的实例

    本篇文章主要介绍了Spring MVC 文件上传下载的实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Spring Retry 重试实例详解

    Spring Retry 重试实例详解

    这篇文章主要介绍了Spring Retry 重试,使用方式有两种分别是命令式和声明式,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • Spring中bean对象的装配方式、作用域及生命周期详解

    Spring中bean对象的装配方式、作用域及生命周期详解

    这篇文章主要介绍了Spring中bean对象的装配方式、作用域及生命周期详解,SprignBoot中 @Bean 完美的替换了了上面的这种在xml中配置的方法,使用以下方法就能让spring在需要自动创建Info对象时,自动调用这个方法,需要的朋友可以参考下
    2023-11-11
  • java json 省市级联实例代码

    java json 省市级联实例代码

    这篇文章介绍了java json 省市级联实例代码,有需要的朋友可以参考一下
    2013-09-09
  • Spring深入刨析声明式事务注解的源码

    Spring深入刨析声明式事务注解的源码

    在spring注解中,使用声明式事务,需要用到两个核心的注解:@Transactional注解和@EnableTransactionManagement注解。将@Transactional注解加在方法上,@EnableTransactionManagement注解加在配置类上
    2022-07-07
  • 如何用java实现分页查询

    如何用java实现分页查询

    这篇文章主要介绍了如何用java实现分页查询,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06

最新评论