java四种对象引用

1.强引用:与强引用关联的对象,JVM一定不会回收,内存不足时会抛出OutOfMemery。

2.软引用:与软引用关联的对象,在内存不足时会被JVM回收利用。

3.弱引用:只要JVM进行垃圾回收,就会被回收。

4.虚引用:和没引用关联是一样的,随时可能被回收。

软引用、弱引用可以和引用队列(ReferenceQueue)联合使用,如果引用被垃圾回收器回收,java虚拟机会把这个引用加入与之关联的引用队列中。

虚引用主要是用来跟踪对象被垃圾回收的活动。弱引用与虚引用的区别:虚引用必须和引用队列联合使用。

当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象内存之前,把虚引用加入与之关联的引用队列中。程序通过判断引用队列是否已经加入虚引用,来了解被引用的对象是否将要垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,那就可以再引用对象的内存被回收之前采取必要的行动。

public class PhantomReferenceTest {
    public static void main(String[] args) {
        ReferenceQueue referenceQueue = new ReferenceQueue();
        PhantomReference<String>  phantomReference = new PhantomReference<String>("hello",referenceQueue);
        
    }
}

猜你喜欢

转载自blog.csdn.net/sinat_36265222/article/details/87604011
今日推荐