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可结束强引用,保证能够被回收。

相关推荐
SimonKing30 分钟前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean37 分钟前
Jackson View Extension Spring Boot Starter
java·后端
Seven972 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55111 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河11 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程14 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
孟健15 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
躺平大鹅16 小时前
Java面向对象入门(类与对象,新手秒懂)
java
码路飞17 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python