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

相关推荐
学长毕业设计2 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西2 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西3 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午3 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065253 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_3 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
傲笑风4 小时前
【openvino】tinybert基于openvino服务化部署(四)
人工智能·python·自然语言处理·nlp·bert·openvino
维基框架4 小时前
WIKI 知识库 v1.1.1 正式发布
人工智能·python
予昊4 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
2601_962203514 小时前
【SpringAI入门】初识SpringAI
java