base - JVM-java中的引用类型(强、软、弱、虚)

134 阅读1分钟

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。

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

由结果可见,虚引用并不能获取到实际的对象
在这里插入图片描述