Java:对象的强、软、弱和虚引用的区别
import java.lang.ref.WeakReference;
public class ReferenceTest {
public static void main(String[] args) {
// 创建一个字符串对象
String str = new String("我爱学java");
// 创建弱引用,让此弱引用引用到"我爱学java"字符串
WeakReference wr = new WeakReference(str);
// 切断str和我爱学java字符串之间的引用
str = null;
// 去除弱引用所引用的对象
System.out.println(wr.get());
// 强制垃圾回收
System.gc();
// 调用finalize方法
System.runFinalization();
// 再次取出弱引用的对象
System.out.println(wr.get());
//=================================================================
Object obj = wr.get();
if (obj == null) {
// 重建一个
wr = new WeakReference(recreateIt());
obj =wr.get();
System.out.println(obj);
}
//再次切断
obj =null;
System.out.println(obj);
}
private static Object recreateIt() {
String str = new String("新的字符串对象");
return str;
}
}
(2)虚引用
import java.lang.ref.PhantomReference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference; public class PhantomReferenceTest { public static void main(String[] args) { // 创建一个字符串对象
String str = new String("我爱学java"); // 创建一个引用队列
ReferenceQueue rq = new ReferenceQueue();
// 创建一个虚引用,让虚引用 引用到"我爱学java"
PhantomReference pr = new PhantomReference(str, rq); // 切断str和我爱学java字符串之间的引用
str = null;
// 并不能通过虚引用获取被引用的对象,输出就为null
System.out.println(pr.get()); // 强制垃圾回收
System.gc();
// 调用finalize方法
System.runFinalization(); // 垃圾回收之后,虚引用将被放在引用队列中
//取出引用队列中最先进入队列引用与pr进行比较
System.out.println(rq.poll() == pr); } }
Java:对象的强、软、弱和虚引用的区别的更多相关文章
- 详解Java中对象的软、弱和虚引用的区别
对于大部分的对象而言,程序里会有一个引用变量来引用该对象,这是最常见的引用方法.除此之外,java.lang.ref包下还提供了3个类:SoftReference.WeakReference和Phan ...
- java中的强,软,弱,虚引用
引用的应用场景 我们都知道垃圾回收器会回收符合回收条件的对象的内存,但并不是所有的程序员都知道回收条件取决于指向该对象的引用类型.这正是Java中弱引用和软引用的主要区别. 如果一个对象只有弱引用指向 ...
- Java:对象的强、软、弱、虚引用
转自: http://zhangjunhd.blog.51cto.com/113473/53092 1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无 ...
- Java:对象的强、软、弱和虚引用
1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK ...
- Java对象的强、软、弱和虚引用详解
1.对象的强.软.弱和虚引用 转自:http://zhangjunhd.blog.51cto.com/113473/53092/ 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无 ...
- java基础知识再学习--集合框架-对象的强、软、弱和虚引用
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/53092 本文 ...
- Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
//转 http://blog.csdn.net/lyfi01/article/details/6415726 1.Java对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变 ...
- Java:对象的强、软、弱和虚引用[转]
原文链接:http://zhangjunhd.blog.51cto.com/113473/53092/ 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...
- Java对象的强、软、弱和虚引用+ReferenceQueue
Java对象的强.软.弱和虚引用+ReferenceQueue 一.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足 ...
随机推荐
- PHP(十二)文件操作
- 看图说说JVM老年代垃圾收集器
注:G1垃圾收集器是目前最前沿的GC收集器,未来将取代CMS垃圾收集器,可以作为整个Heap的收集器使用,不限于老年代!!!
- postman的使用方法详解!最全面的教程
文章来源:http://www.cnplugins.com/tool/specify-postman-methods.html 一 简介 Postman 是一款功能超级强大的用于发送 HT ...
- 安装Greenplum-perfmon-web监控软件遇到的问题及解决
环境 Product Version Pivotal Greenplum (GPDB) 4.3.x Pivotal Greenplum Command Center (GPCC) Others ...
- session喜欢丢值且占内存,Cookis不安全,用什么可以代替呢?
localstorage sessionstorage 在线资料 webdb 这些都是基于HTML5的新特性! 此外还可以使用服务器文件.DB等.
- 解决WebService中System.InvalidOperationException:缺少参数的问题
此问题在.Net 4.0 IIS7 Windows Server 2008下可能会出现. 现象是第一次正常调用,第二次接口报错. 删除CacheDuration即可.
- HBase – 探索HFile索引机制
本文由 网易云发布. 作者: 范欣欣 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 01 HFile索引结构解析 HFile中索引结构根据索引层级的不同分为两种:single-level和m ...
- 回去看linux的指令1
SYNC CL : MSM8953 @ CL#:12212299 PROJECT PATH : // Platform / N / NILE / COMBINATION / MSM8953 Cross ...
- JUC中Executor基本知识
Future And Callable 引用 http://www.cnblogs.com/dolphin0520/p/3949310.html http://www.iocoder.cn/JUC/ ...
- element-ui Table表格结合CheckBox实现单选效果
最近做项目遇到一个需求,需要实现一个表格的单选,由于项目使用的是element-ui.于是去看了表格的文档,确实有单选的方法,但是官方的单选是直接选中表格行,通过颜色来区分 看着效果不明显,实际需要一 ...