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

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

java 复制代码
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("对象仍然存在");
        }
    }

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

java 复制代码
 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("对象仍然存在");
        }
    }

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

相关推荐
青云交9 小时前
Java 大视界 -- 基于 Java 的大数据可视化在企业供应链动态监控与优化中的应用
java·数据采集·大数据可视化·动态优化·企业供应链·实时预警·供应链监控
van久9 小时前
.Net Core 学习:DbContextOptions<T> vs DbContextOptions 详细解析
java·学习·.netcore
Coder_Boy_9 小时前
【物联网技术】- 基础理论-0001
java·python·物联网·iot
dangdang___go9 小时前
文件操作2+程序的编译和链接(1)
java·服务器·前端
FY_20189 小时前
SubprocVecEnv 原理、详细使用方法
人工智能·python·机器学习
czliutz9 小时前
使用pdfplumber库处理pdf文件获取文本图片作者等信息
python·pdf
Tony_yitao9 小时前
12.华为OD机试 - N个选手比赛前三名、比赛(Java 双机位A卷 100分)
java·算法·华为od·algorithm
Sunhen_Qiletian9 小时前
《Python开发之语言基础》第七集:库--时间库
前端·数据库·python
smile_Iris9 小时前
Day 30 函数定义与参数
开发语言·python