1、四种类型引用-概述
1、java对象的引用包括:
1-1、从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。
1.1、四种类型引用-强引用
1、四种类型引用-强引用(strong reference)-概述
1-1、如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。
1-2、指创建一个对象并把这个对象赋给一个引用变量。【new()一个对象】
2、四种类型引用-强引用(strong reference)-举例Demo
public class Demo{
public static void main(String[]args){
Object obj=new Object();//强引用,默认
Object ref=obj;//引用传递
obj=null;//断开连接
System.gc();
System.out.println(ref);
}
}
1.2、四种类型引用-软引用
1、四种类型引用-软引用(SoftReference)-概述
1-1、如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。
1-2、软引用可用来实现内存敏感的高速缓存,比如网页缓存、图片缓存等。使用软引用能防止内存泄露,增强程序的健壮性。
1-3、一旦SoftReference保存了对一个Java对象的软引用后,在垃圾线程对 这个Java对象回收前,SoftReference类所提供的get()方法返回Java对象的强引用。另外,一旦垃圾线程回收该Java对象之 后,get()方法将返回null。
1-4、public class SoftReference<T> extends Reference<T> {}
2、四种类型引用-强引用(SoftReference)-举例Demo
public class Demo{
public static void main(String[]args){
Object obj=new Object();
SoftReference<Object> ref=new SoftReference<Object><obj>;//软引用
obj=null;//断开连接
System.gc();
System.out.println(ref.get());
}
}
1.3、四种类型引用-弱引用
1、四种类型引用-弱引用(WeakReference)-概述
1-1、无论内存够不够,下一次内存收集之前都会进行;
1-2、弱引用需要使用的是Map接口的子类:java.util.WeakHashMap【key是弱引用】。
1-3、在java中,用java.lang.ref.WeakReference类来表示。
1-3-1、public class WeakReference<T> extends Reference<T> {}
2、四种类型引用-弱引用(PhantomReference)-举例Demo
public class TestDemo{
public static void main(String[]args){
String key=new String(“hi”);
String value=new String(“hello”);
Map<String,String> map=new WeakHashMap<String,String>();
map.put(key,value);
System.out.println(map.get(key));
key=null;
System.out.println(map);
System.gc();
System.out.println(map);
}
}
public class TestDemo{
public static void main(String[]args){
String key=new String(“hi”);
WeakReference<String> map=new WeakHashMap<String>(key);
Key=null;
System.out.println(ref.get());
System.gc();
System.out.println(ref.get());
}
}
1.4、四种类型引用-虚引用
1、四种类型引用-虚引用(PhantomReference)-概述
1-1、虚引用,它并不影响对象的生命周期。
1-2、在java中用java.lang.ref.PhantomReference类表示。
1-3、如果一个对象与虚引用关联,则跟没有引用与之关联一样,在任何时候都可能被垃圾回收器回收。
1-4、虚引用必须和引用队列(ReferenceQueue)关联使用,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会把这个虚引用加入到与之 关联的引用队列中。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。
1-5、public class WeakReference<T> extends Reference<T> {}
2、四种类型引用-虚引用(PhantomReference)-举例Demo
public class Demo {
public static void main(String[] args) {
//引用队列
ReferenceQueue<String> queue = new ReferenceQueue<String>();
PhantomReference<String> pr = new PhantomReference<String>(new String("hello"), queue);
System.out.println(pr.get());
}
}
2、四种类型引用-简介
2.1、四种类型引用-类继承关系
2.2、FinalReference详解
https://blog.csdn.net/zqz_zqz/article/details/79225245