java各种引用
来源:互联网 发布:免费建造师做题软件 编辑:程序博客网 时间:2024/06/07 09:18
Java中有四种类型的引用
强引用(String reference)
弱引用(Weak reference)
软引用(Soft reference)
虚引用(Phantom reference)
1.强引用
是编程中使用的最简单的引用,如代码String s = "abc" 中,变量s就是字符串对象“abc”的一个强引用。任何被强引用指向的对象都不能被垃圾回收器 回收,
这些对象是在程序中需要的。
2.弱引用
使用java.lang.ref.WeakReference class 类来表示,可以使用下面的代码创建弱引用:
Counter counter = new Counter(); // strong reference - line 1WeakReference<Counter> weakCounter = new WeakReference<Counter>(counter); //weak referencecounter = null; // now Counter object is eligible for garbage collection
现在只要你给强引用对象counter赋空值null,该对象就可以被垃圾回收器回收。因为该对象此时不再含有其他强引用
另一个使用弱引用的例子是WeakHashMap,它是除HashMap和TreeMap之外,Map接口的另一种实现。WeakHashMap有一个特点:map中的键值(keys)都被封装成弱引用,也就是说一旦强引用被删除,WeakHashMap内部的弱引用就无法阻止该对象被垃圾回收器回收。
3.软引用
如果该对象含有软引用,Counter对象不会立即被回收,除非JVM需要内存。Java中的软引用使用java.lang.ref.SoftReference类来表示
Counter prime = new Counter(); // prime holds a strong reference – line 2SoftReference soft = new SoftReference(prime) ; //soft reference variable has SoftReference to Counter Object created at line 2prime = null; // now Counter object is eligible for garbage collection but only be collected when JVM absolutely needs memory软引用可是很好的实现JVM缓存
4.虚引用
使用java.lang.ref.PhantomReference类来表示。拥有虚引用的对象可以在任何时候被垃圾回收器回收。和弱引用和软引用相似,你可以通过如下代码创建虚引用:
ReferenceQueue refQueue = new ReferenceQueue(); //reference will be stored in this queue for cleanupDigitalCounter digit = new DigitalCounter();PhantomReference<DigitalCounter> phantom = new PhantomReference<DigitalCounter>(digit, refQueue);
一个对象的生命周期可以通过下图进行描述:
0 0
- java各种引用
- java中的各种引用介绍
- JAVA各种引用(Reference)的汇总
- 各种标签引用
- 各种JSON的maven引用
- java引用
- Java引用
- Java引用
- java引用
- Java 引用
- JAVA引用
- [Java]引用
- java引用
- JAVA引用
- java 引用
- JAVA引用
- Java 引用
- java 引用
- Android TextView换行问题
- Java:JSTL遍历数组,List,Set,Map等
- 我的事你不知道的事
- Struts时整合spring 应注意的问题
- hadoop计算平均值
- java各种引用
- CodeFroce
- 陋室铭
- ubuntu服务器分区基础
- 超凡蜘蛛侠2 The Amazing Spider-Man 2 (2014) BT在线观看下载地址
- Android UI 限定字数 单独一行
- 当运行ls -F命令时,文件名后边的符号的意思(*,|,=,/,>,@)
- UVA 10194 Football (aka Soccer)
- Raw-OS源码分析之任务挂起与唤醒