在JDK1.2之后,Java对引用进行了扩充,将引用分为强引用、软引用、弱引用和虚引用,这4中引用的强度依次减弱,这里说的引用强度是指引用关联的对象在发生垃圾回收之后是否还存在,具体如下:

  1. 强引用类似“Hello hello = new Hello()”这种引用,只要引用还存在,被引用的对象将永远不会被垃圾回收器回收;

  2. 软引用用来关联一些可以存活但并非一定要存活的对象,这些被关联的对象在将要发生内存溢出异常之前被列入回收范围等待第二次回收,如果这次回收还没有足够的内存空间才会抛出内存溢出异常。在JDK1.2之后的版本中,提供了SoftReference类来实现软引用;

  3. 弱引用关联的对象,在垃圾回收器工作时,无论当前内存空间是否够用,都会被回收掉。在JDK1.2之后的版本中,提供了WeakReference类来实现弱引用;

  4. 虚引用被称为幽灵引用或幻影引用。一个对象是否有虚引用的存在,完全不会对其生命周期构成任何影响,也无法通过虚引用来取得一个对象实例,使用虚引用的唯一目的是在对象被回收的时候收到一个系统通知。在JDK1.2之后的版本中,提供了PhantomReference来实现虚引用。

再谈Java中的引用相关推荐

  1. 再谈Java中的覆盖(Overriding)与重载(Overloading)

    在 Overriding vs Overloading in Java 中,我们简单介绍了Java中的Overriding 与 Overloading ,下面我们就此话题继续探讨: 问题一:什么是静态 ...

  2. JVM系列之:再谈java中的safepoint

    文章目录 safepoint是什么 safepoint的例子 线程什么时候会进入safepoint safepoint是怎么工作的 总结 safepoint是什么 java程序里面有很多很多的java ...

  3. 再谈 Java中Runnable和Thread的区别

    在面试中老有面试官问这个问题,个人觉得这个问题问的没有技术,一个死记硬背就能回答的很好.但是更深的回答是什么了,那就是直接回答源码吧. thread类实现了runnable 接口 ,Runnable就 ...

  4. java中的static类_再议Java中的static关键字

    再议Java中的static关键字 java中的static关键字在很久之前的一篇博文中已经讲到过了,感兴趣的朋友可以参考:<Java中的static关键字解析>. 今天我们再来谈一谈st ...

  5. 浅谈Java中的栈和堆

    人们常说堆栈堆栈,堆和栈是内存中两处不一样的地方,什么样的数据存在栈,又是什么样的数据存在堆中? 这里浅谈Java中的栈和堆 首先,将结论写在前面,后面再用例子加以验证. Java的栈中存储以下类型数 ...

  6. aba会导致问题_浅谈Java中ABA问题及避免

    本文主要研究的是关于Java中ABA问题及避免的相关内容,具体如下. 在<Java并发实战>一书的第15章中有一个用原子变量实现的并发栈,代码如下: public class Node { ...

  7. java 线程aba,浅谈Java中ABA问题及避免,浅谈javaaba避免

    浅谈Java中ABA问题及避免,浅谈javaaba避免 本文主要研究的是关于Java中ABA问题及避免的相关内容,具体如下. 在<Java并发实战>一书的第15章中有一个用原子变量实现的并 ...

  8. 浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  9. java中修饰常量的事_浅谈java中的声明常量为什么要用static修饰

    今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰.结果sonar代码检查提示: Rename this field "PERSON_TYPE_USER" ...

最新文章

  1. Android Handler sendEmptyMessageDelayed 和 sendEmptyMessage 的使用
  2. Java Script学习 4(转)
  3. 和世界冠军一起准备ACM!清华杜瑜皓来了:连续4年ACM中国赛区冠军
  4. 【高性价比】AIO-3288C四核高性能主板
  5. docker 推送到本地仓库_Docker_学习笔记系列之仓库
  6. java 泛型 引用_Java嵌套自引用泛型
  7. python如何读取数据保存为新格式_Python Numpy中数据的常用保存与读取方法
  8. JavaFX中的塔防(6)
  9. 宣布EAXY:在Java中简化XML
  10. Android之通过VideoView控件播放一个视频出现的问题以及我的解决办法
  11. 【冷笑话】看谁跑的快?
  12. 诸葛亮的十堂课:在变局中安身立命,在逆境中找到力量
  13. Spring Data 开发环境搭建(二)
  14. socket error:10053
  15. wlanconnect无法连接wifi_苹果iphone12无法连接wifi怎么回事 解决方法分享
  16. 【优化预测】基于matlab飞蛾扑火算法优化LSSVM预测【含Matlab源码 110期】
  17. mysql 格式化_在线SQL代码格式化
  18. 材料界的魔术师:值得关注的10家超材料创业公司
  19. mysql分析问卷_问卷调查相关表
  20. Win10提示“为了对电脑进行保护,已经阻止此应用”怎么处理?

热门文章

  1. centos java tar_CentOS安装JDK-tar.gz文件
  2. TCP协议与UDP协议的区别
  3. linux下搭建博客day4注册git账号
  4. 我的六年软件测试感悟... 测试人的一生。算是摸透了软件测试这一行
  5. 新手上路:盘点「性能测试」必须弄懂的技术点
  6. oracle11存储过程,oracle 存储过程执行报错ORA-12828
  7. ip地址怎么设置才有效_如果想减肥,怎么拆解目标才是有效的?
  8. 计算机网络中的HTML,计算机网络分类有哪些
  9. Tensorflow的可视化框架:TensorBoard
  10. java获取http文件大小_Java开发网 - 关于通过HTTPUrlConnection获取一个文件的大小?...