一、什么是引用

首先要明白什么是一个引用呢?Object o = new Object()这就是一个引用了,一个变量指向new出来的对象,这个变量就叫一个引用,引用这个东西,在java里面分4种,普通的引用比如Object o = new Object(),这个就叫强引用。

二、四大引用

1、强引用(NormalReference):

只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,不会去回收。如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null,这样,JVM就可以回收对象了

2、软引用(SoftReference):

在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。这种特性常常被用来实现缓存技术,比如网页缓存,图片缓存,内存不足会自动回收。软引用用法:SoftReference<对象>来标记为软引用

3、弱引用(WeakReference):

弱引用的引用强度比软引用要更弱一些,无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收。弱引用用法:WeakReference<对象>

4、虚引用(PhantomReference):

虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收。也就是说将永远无法通过虚引用来获取对象,虚引用必须要和 ReferenceQueue 引用队列一起使用。虚应用用法:PhantomReference<对象>

5、引用队列(ReferenceQueue):

引用队列可以与软引用、弱引用以及虚引用一起配合使用,当垃圾回收器准备回收一个对象时,如果发现它还有引用,那么就会在回收对象之前,把这个引用加入到与之关联的引用队列中去。程序可以通过判断引用队列中是否已经加入了引用,来判断被引用的对象是否将要被垃圾回收,这样就可以在对象被回收之前采取一些必要的措施。

Java的四大引用强、软、弱、虚相关推荐

  1. JVM的四种引用:强,软,弱,虚(与gc有关)

    JVM的四种引用 强 软 弱 虚 强 gc时不回收 软 软引用对象在gc时,在内存溢出前,会回收; 弱 弱引用对象在gc时,不论内存使用情况都会回收; 虚 虚引用对象在gc后,会发送一条通知给 Ref ...

  2. 简单直白教你理解Java中四大引用强引用,软引用,弱引用,虚引用

    我属于自学型的,所以知识不够系统,只能是一边儿工作一边查漏补缺,在此要对那些写技术文章的人由衷的说句谢谢,谢谢各位大神们的分享 ONE,强引用(StrongReference) 概念介绍: 在此说明一 ...

  3. 一文带你搞懂Java的四大引用:强引用,软引用,弱引用以及虚引用

    Java中的引用 强引用Reference Reference类以及继承派生的类. 当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,死都不收. 这样定义的默 ...

  4. Java 的四大引用(强、软、弱、虚)

    在 jdk1.2 以后,Java 对于引用的概念进行了扩充,将引用分为强引用(Strong Reference).软引用(Soft Reference).弱引用(Weak Reference).虚引用 ...

  5. Java四大引用(强、软、弱、虚)

    目录 强引用 软引用 弱引用 虚引用 强引用 也是我们平时用得最多的, new 一个对象就是强引用,例如 Object obj = new Object(); 当JVM的内存空间不足时,宁愿抛出Out ...

  6. Java若_【JAVA基础】JAVA四种引用(强软若虚)

    java中有四种引用类型,分别是 强引用 强引用也就是我们通常认为的java中的中的引用关系 通过new创建一个对象,然后赋值给一个变量,这个时候这个变量指向堆中地址的引用就是一个强引用 他收到JVM ...

  7. @mapperscan mapper还是无法引用_高能来了!Java的四大引用

    文章很长文末有福利 Java中的四大引用 1. 强引用(StrongReference) 我们平常使用new操作符来创建的对象就是强引用对象,只要有一个引用存在,垃圾回收器永远不可能回收具有强引用的对 ...

  8. java对象四大引用案例

    目录 目录 目录 0.前言: 1.强引用: 2.软引用: 3.弱引用: 4.虚引用: 5.面试题扩展: 6.线程池中的ThreadLocal: 0.前言: 1.强引用:当对象被一个或一个以上的引用类型 ...

  9. JVM笔记(二)对象的生死与java的四大引用

    目录 一.对象的生死 1.1 引用计数法 1.2 可达性分析法 可作为GC Roots的对象: 1.3 引用 整体架构 强引用 软引用 软引用用途 弱引用 WeakHashMap 虚引用 1.4 对象 ...

最新文章

  1. #20145238荆玉茗《网络对抗》-逆向及Bof进阶实践
  2. 简单理解AOP(面向切面编程)
  3. adb shell 小米手机_如何在Android手机上进行自动化测试
  4. 计算机设备管理系统论文,设备管理系统论文-.doc
  5. 高中python公开课怎么上好_Python公开课 - Requests高级功能
  6. CSS篇 Process Document第7章 Technical Report Development Process翻译
  7. Laya 打包微信 处理分包 fnt字体加载问题 版本管理的报错
  8. 开发交接文档_为开发人员创造更好的设计交接体验
  9. 20155313 杨瀚 《网络对抗技术》实验三 免杀原理与实践
  10. python使用Speech_Recognition实现普通话识别(一)
  11. js——分享QQ、QQ空间、微信、微博
  12. html如何制作图片平移的效果,抖音里单张图片平移视频怎么制作?影音制作实现一张图片从左到右滑动视频效果...
  13. MessageBox--获知点击确认还是取消?
  14. 分享一道美美美团面试题!
  15. 分数阶 计算机应用,分数阶计算器
  16. AD中如何快速画完原理图引脚?
  17. 中学化学教学参考杂志社中学化学教学参考编辑部2022年第12期目录
  18. java新手练习项目_有哪些好的java项目适合新手练习?
  19. Android触摸事件传递分析与实践
  20. 程序员单干,如何快速打造个人名片?

热门文章

  1. 开源一对一源码,一对一直播系统如何接入码支付
  2. 区块补习班 | 假酒害人屡禁不止?对不起我来晚了!
  3. 计算机模拟需要什么配置电脑,城市天际线配置要求 最低电脑配置要求
  4. 计算机密码是空的怎么重置,电脑忘记开机登录密码怎么办? Windows 密码重置 - 合一学院...
  5. PEER地震波数据转化成lsdyna求解器格式曲线关键字方法
  6. 什么是 DORA 指标以及它们如何告知 DevOps 成功?
  7. 当数据中心碰上云计算
  8. 电子计算机厂房火灾危险性,厂房建筑设计防火规范(57页)-原创力文档
  9. 137、易燃固体的火灾危险性
  10. [go基础] go基础之字符串中查找汉字数量