强引用,软引用,弱引用
一、软引用和弱引用的用法
软引用(SoftReference)的含义是,如果一个对象只具有软引用,而当前虚拟机堆内存空间足够,那么垃圾回收器就不会回收它,反之就会回收这些软引用指向的对象。
弱引用(WeakReference)与软引用的区别在于,垃圾回收器一旦发现某块内存上只有弱引用(一定请注意只有弱引用,没强引用),不管当前内存空间是否足够,那么都会回收这块内存。
见如下实例
public static void main(String[] args) {
String str = new String("abc"); //强引用
SoftReference<String> softReference = new SoftReference<>(str); //软引用
str = null; //去掉强引用
System.gc(); //垃圾回收器进行回收
System.out.println(softReference.get());
String strNew = new String("123");
WeakReference<String> weakReference = new WeakReference<>(strNew);//弱引用
strNew = null;
System.gc();
System.out.println(weakReference.get());
}
运行结果如下图
运行结果正好对应了前面软引用和弱引用的知识点。