从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。
1.强引用
本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就 类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,...
分类:
编程语言 时间:
2015-03-29 15:06:10
阅读次数:
277
??
1.对象的强、软、弱和虚引用
在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。下图为对象应用类层次。
⑴强引...
分类:
编程语言 时间:
2015-03-14 23:18:02
阅读次数:
176
从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。1.强引用本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内...
分类:
其他好文 时间:
2015-03-05 14:31:13
阅读次数:
126
当程序创建对象、数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存区,
当我们创建的对象不再被引用时,所在的内存就变成了垃圾,最后等待垃圾回收机制进行回收,Java的垃圾回收机
制具有以下特征:
1、垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源,比如数据库连接、网络IO等资源。
2、程序无法精确控制垃圾回收的运行,...
分类:
编程语言 时间:
2015-02-20 22:03:35
阅读次数:
204
1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低...
分类:
编程语言 时间:
2015-01-20 20:24:10
阅读次数:
254
本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用 在JDK 1.2曾经的版本号中,若一个对象不被不论什么变量引用,那么程序就无法再使用这个对象。也就是说,仅仅有对象处于可触及(reachable)状态,程序才干使用它。从JDK 1.2版本号開始,把对象的...
分类:
其他好文 时间:
2015-01-17 22:05:09
阅读次数:
235
我用PhantomReference实现一个实时监视对象数量的小功能,上图代码片断中,ref_array是所有对象的虚引用的集合,我发现了一个问题,就是当暴力测试的时候不时会抛这个错误,即是当在for遍历ref_array还没遍历完的时候,系统回收对象,ref_array中的虚引用被拿到Refe.....
分类:
其他好文 时间:
2015-01-15 19:56:49
阅读次数:
108
Java 7之基础 - 强引用、弱引用、软引用、虚引用 - 聚沙成塔、水滴石穿 - 博客频道 - CSDN.NET1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:[java] view plaincopyprint?.....
分类:
编程语言 时间:
2015-01-12 16:23:53
阅读次数:
285
Java/Android中有四种引用类型,分别是:Strong reference - 强引用Soft Reference - 软引用Weak Reference - 弱引用Phantom Reference - 虚引用不同的引用类型有着不同的特性,同时也对应着不同的使用场景。1.St...
分类:
移动开发 时间:
2014-12-08 22:49:15
阅读次数:
276
本文主要是重申下这几种引用的差别,并给出实际的例子,让读者清楚的感受到它们的差别。软引用和弱引用差别不大,JVM都是先将其referent字段设置成null,之后将软引用或弱引用,加入到关联的引用队列中。我们可以认为JVM先回收堆对象占用的内存,然后才将软引用或弱引用加入到引用队列。而虚引用则不同,JVM不会自动将虚引用的referent字段设置成null,而是先保留堆对象的内存空间,直接将PhantomReference加入到关联的引用队列,也就是说如果我们不手动调用PhantomReference.cl...
分类:
编程语言 时间:
2014-11-21 23:20:12
阅读次数:
1095