Java中强引用,软引用,弱引用概念解析

 更新时间:2020年03月23日 09:47:21   作者:kakaisgood  
这篇文章主要介绍了Java中强引用,软引用,弱引用概念解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.概念解释强引用是使用最普遍的引用:Object o=new Object(); 特点:不会被GC

将对象的引用显示地置为null:o=null; // 帮助垃圾收集器回收此对象

举例ArrayList的实现源代码:


软引用用来描述一些还有用但是并非必须的对象,在Java中用java.lang.ref.SoftReference类来表示。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。因此,这一点可以很好地用来解决OOM的问题,并且这个特性很适合用来实现缓存:比如网页缓存、图片缓存等。

浏览器网页缓存实例:


软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。

弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。 如果这个对象是偶尔的使用,并且希望在使用时随时就能获取到,但又不想影响此对象的垃圾收集,那么你应该用 Weak Reference 来记住此对象。

实例:


虚引用也称为幻影引用:一个对象是都有虚引用的存在都不会对生存时间都构成影响,也无法通过虚引用来获取对一个对象的真实引用。唯一的用处:能在对象被GC时收到系统通知,JAVA中用PhantomReference来实现虚引用。

2.对比不同:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于spring boot排除扫描类的三种方式小结

    基于spring boot排除扫描类的三种方式小结

    这篇文章主要介绍了spring boot排除扫描类的三种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java基础教程之数组的定义与使用

    Java基础教程之数组的定义与使用

    Java语言的数组是一个由固定长度的特定类型元素组成的集合,它们的数据类型必须相同,声明变量的时候,必须要指定参数类型,这篇文章主要给大家介绍了关于Java基础教程之数组的定义与使用的相关资料,需要的朋友可以参考下
    2021-09-09
  • Java中从JSON转Java实体的多种方法详解

    Java中从JSON转Java实体的多种方法详解

    在现在的日常开发中不管前端还是后端,JSON 格式的数据是用得比较多的,甚至可以说无处不在,这篇文章主要给大家介绍了关于Java中从JSON转Java实体的多种方法,需要的朋友可以参考下
    2023-12-12
  • Springboot启动扩展点超详细教程小结

    Springboot启动扩展点超详细教程小结

    这篇文章主要介绍了Springboot启动扩展点超详细教程小结,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • spring boot 不连接数据库启动的解决

    spring boot 不连接数据库启动的解决

    这篇文章主要介绍了spring boot 不连接数据库启动的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 两种Spring服务关闭时对象销毁的实现方法

    两种Spring服务关闭时对象销毁的实现方法

    spring提供了两种方式用于实现对象销毁时去执行的操作,本文主要为大家详细介绍了这两种方式的具体实现,文中的示例代码讲解详细,希望对大家有所帮助
    2023-04-04
  • java内部测试类代码详解

    java内部测试类代码详解

    这篇文章主要介绍了java内部测试类代码详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • java实现统一异常处理的示例

    java实现统一异常处理的示例

    一个全局异常处理类需要处理三类异常1.业务类异常,2.运行时异常 ,3.Error,本文给大家介绍java实现统一异常处理的示例,感兴趣的朋友一起看看吧
    2021-06-06
  • SpringBoot 钩子接口的实现代码

    SpringBoot 钩子接口的实现代码

    本文主要介绍了SpringBoot 钩子接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • Spring Cloud Gateway实现灰度发布方案

    Spring Cloud Gateway实现灰度发布方案

    灰度发布是在微服务中的表现为同一服务同时上线不同版本,让一部分用户使用新版本来验证新特性,如果验证没有问题,则将所有用户都迁移到新版本上,本文就来介绍一下如何实现,感兴趣的可以了解一下
    2023-12-12

最新评论