0
点赞
收藏
分享

微信扫一扫

Java.WeakReference 弱引用接口

左小米z 2022-04-25 阅读 185

弱引用,如果一个对象被弱引用 引用,那么GC的时候回被回收。

public class MyWeakEntity1 extends WeakReference<Test3> {
    public MyWeakEntity1(Test3 referent) {
        super(referent);
    }
}

测试:

public class WeakTest4 {

    public static void main2(String[] args) {
        // Test3对象 不止 被弱引用entity1 ,也被test3 引用。在强制gc后,test3 引用的对象还在
        final Test3 test3 = new Test3();
        MyWeakEntity1 entity1 = new MyWeakEntity1(test3);
        System.out.println("entity1.test3 : " + entity1.get());
        System.gc();
        try {
            Thread.sleep(5 * 1000l);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("entity1.test3 : " + entity1.get());
    }


    public static void main1(String[] args) {
        // Test3 对象 只被 弱引用 引用
        MyWeakEntity1 entity1 = new MyWeakEntity1(new Test3());
        System.out.println("entity1.test3 : " + entity1.get());
        // 强制JVM GC
        System.gc();
        try {
            Thread.sleep(5 * 1000l);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 重新获取 引用的值,就是null
        System.out.println("entity1.test3 : " + entity1.get());
    }
}

举报

相关推荐

0 条评论