java判断对象是否还在被引用

作者 : admin 本文共720个字,预计阅读时间需要2分钟 发布时间: 2024-06-9 共3人阅读

1、代码取消强引用后,gc回收对象

public static void main(String[] args) {
        Object obj = new Object();
        WeakReference<Object> weakRef = new WeakReference<>(obj);
        System.out.println(weakRef.get());
        obj = null; // 取消强引用,后续gc会被回收,如果不设为null取消强引用,gc也无法回收
        System.gc(); // 提示垃圾回收器进行回收
        System.out.println(weakRef.get());
        // 判断对象是否被回收
        if (weakRef.get() == null) {
            System.out.println("对象已经被回收");
        } else {
            System.out.println("对象仍然存在");
        }
    }

java判断对象是否还在被引用插图

2、不取消强引用,gc无法回收

 public static void main(String[] args) {
        Object obj = new Object();
        WeakReference<Object> weakRef = new WeakReference<>(obj);
        System.out.println(weakRef.get());
       
        System.gc(); // 提示垃圾回收器进行回收
        System.out.println(weakRef.get());
        // 判断对象是否被回收
        if (weakRef.get() == null) {
            System.out.println("对象已经被回收");
        } else {
            System.out.println("对象仍然存在");
        }
    }

java判断对象是否还在被引用插图(1)

3、总结,将对象设置为null可结束强引用,保证能够被回收。

本站无任何商业行为
个人在线分享 » java判断对象是否还在被引用
E-->