世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
JDK1.2以后,java的引用不再只是一种类型
强引用:正常的引用,只要有引用链,就不会被回收
软引用:内存溢出之前优先回收
弱引用:垃圾收集时一定回收
虚引用:不引用实际对象,垃圾回收时起通知作用
测试代码如下:
@Test
void reference () {
SoftReference softReference = new SoftReference("abc");
Object soft = softReference.get();
System.out.println("软引用:" + soft);
WeakReference weakReference = new WeakReference("def");
Object weak = weakReference.get();
System.out.println("弱引用:" + weak);
PhantomReference phantomReference = new PhantomReference("kkk", new ReferenceQueue());
Object phantom = phantomReference.get();
System.out.println("虚引用:" + phantom);
}
运行结果:
软引用:abc
弱引用:def
虚引用:null
由结果可见,虚引用并不能获取到实际的对象