强引用
强引用就是类似Object obj = new Object();之类的,只要有强引用存在,垃圾收集器就不会回收引用对象。
软引用
被软引用引用的对象,当系统将要内存不足时,被软引用引用的对象就将被回收,JDK提供了SoftReference类来实现软引用。软引用对象最常用于实现内存敏感的缓存。
一个代码例子:
import java.lang.ref.SoftReference;
public class SoftReferenceTest {
public static void main(String[] args) {
String msg = "hello world!";//强引用
SoftReference<String> softMsg = new SoftReference<String>("hello world");//软引用
System.out.println(msg);
System.out.println(softMsg.get());
}
}
弱引用
如果一个对象只有弱引用引用的话,将会被垃圾回收。JDK提供了WeakReference来实现弱引用。WeakHashMap也是弱引用的一个例子。
虚引用
最弱的一种引用,无法通过虚引用得到实例,一个对象是否有虚引用存在,完全不会对其生存时间构成影响。JDK提供PhantomReference类来实现虚引用。虚引用存在的唯一作用就是当它指向的对象被回收后,虚引用本身会被加入到引用队列中,用作记录它指向的对象已被销毁。