淘先锋技术网

首页 1 2 3 4 5 6 7

在Java中,存在四种引用类型:强引用(Strong Reference),软引用(Soft Reference),弱引用(Weak Reference)和虚引用(Phantom Reference),它们在Java GC(Garbage Collection)中发挥着不同的作用。


public class ReferenceDemo {
    public static void main(String[] args) {
        Object object1 = new Object(); // 强引用
        SoftReference object2 = new SoftReference<>(new Object()); // 软引用
        WeakReference object3 = new WeakReference<>(new Object()); // 弱引用
        PhantomReference object4 = new PhantomReference<>(new Object(), null); // 虚引用
        // 模拟内存不足,引发GC
        System.gc();
        System.out.println(object1); // object1仍然存在
        System.out.println(object2.get()); // object2存在,但有可能被GC回收
        System.out.println(object3.get()); // object3已经被GC回收
        System.out.println(object4.get()); // object4不可被get到,只会返回null
    }
}

java四种引用类型和gc

强引用是最常见的引用类型,在程序中仅通过强引用来引用对象时,对象不会被GC回收。只有当对象没有任何强引用时,才会被GC回收。

软引用是一种有用的引用类型,它只有在内存不足时才被GC回收。通过将对象包装在SoftReference中,程序可以有效地利用内存,同时不影响GC的性能。

弱引用与软引用类似,也是在内存不足时才被GC回收。与软引用不同的是,弱引用在对象没有任何强引用时,就会被GC回收。

虚引用是最弱的引用类型。虚引用不会影响对象的生命周期,它的唯一作用是在对象被回收时,给出一个通知。

GC是Java中重要的垃圾回收机制,它能够自动地回收不再被程序使用的内存空间。使用四种引用类型,可以更有效地控制对象的生命周期,避免内存泄漏和占用过多的内存。