
JAVA中有关引用
发布日期:2021-05-06 23:23:03
浏览次数:13
分类:技术文章
本文共 998 字,大约阅读时间需要 3 分钟。
在 JDK 1.2 版之前, Java 里面的引用是很传统的定义:
如果 reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称该reference数据是代表某块内存、某个对象的引用。
这种定义并没有什么不对,只是现在看来有些过于狭隘了,一个对象在这种定义下只有“ 被引用 ” 或者 “ 未被引用 ” 两种状态,对于描述一些 “ 食之无味,弃之可惜 ” 的对象就显得无能为力。譬如我们希望能描述一类对象:当内存空间还足够时,能保留在内存之中,如果内存空间在进行垃圾收集后仍然非常紧张,那就可以抛弃这些对象—— 很多系统的缓存功能都符合这样的应用场景。
在 JDK 1.2 版之后, Java 对引用的概念进行了扩充,将引用分为强引用( Strongly Re-ference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)4种,这4 种引用强度依次逐渐减弱。
· 强引用
是最传统的 “ 引用 ” 的定义,是指在程序代码之中普遍存在的引用赋值,即类似 “Object obj=new Object()”这种引用关系。无论任何情况下,只要强引用关系还存在,垃圾收集器就永远不会回收掉被引用的对象。
· 软引用
是用来描述一些还有用,但非必须的对象。只被软引用关联着的对象,在系统将要发生内存溢出异常前,会把这些对象列进回收范围之中进行第二次回收,如果这次回收还没有足够的内存,才会抛出内存溢出异常。在JDK 1.2 版之后提供了 SoftReference 类来实现软引用。
·弱引用
也是用来描述那些非必须对象,但是它的强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾收集发生为止。当垃圾收集器开始工作,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。在JDK 1.2 版之后提供了 WeakReference 类来实现弱引用。
·虚引用
也称为 “ 幽灵引用 ” 或者 “ 幻影引用 ” ,它是最弱的一种引用关系。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象实例。为一个对象设置虚引用关联的唯一目的只是为了能在这个对象被收集器回收时收到一个系统通知。在JDK 1.2 版之后提供了PhantomReference 类来实现虚引用。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月28日 08时29分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LINUX延时函数使用
2019-03-04
数据结构第七章(图---总结一)
2019-03-04
2020-12-24
2019-03-04
网页中常见的状态码
2019-03-04
JDBC——(5)使用Statement操作数据表的弊端
2019-03-04
JDBC——(6)PreparedStatement的使用
2019-03-04
JDBC——(6)PreparedStatement的使用——实现查询操作
2019-03-04
JDBC——小知识:PreparedStatement 和Statement的比较
2019-03-04
JDBC——(6)PreparedStatement的使用——图解查询操作流程
2019-03-04
JDBC——(6)PreparedStatement的使用——针对不同表的查询操作
2019-03-04
MyBatis——(3)MyBatis_接口式编程
2019-03-04
MyBatis——小知识:MyBatis_映射配置文件_参数值获取
2019-03-04
MyBatis——小知识:MyBatis_映射配置文件_#{}:更丰富的用法:
2019-03-04
Java后端技术体系-学习顺序总结
2019-03-04
Java多线程学习笔记
2019-03-04
Hibernate的查询方式——(2)对象导航查询
2019-03-04
java关于回溯算法的题1
2019-03-04
关于myeclipse的security alert_ Mac电脑解决方案
2019-03-04
剑指 offer之数组中出现次数超过一半的数字_java
2019-03-04
剑指 offer之两个链表的第一个公共结点_java
2019-03-04