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

相关推荐
程途知微5 分钟前
ConcurrentHashMap线程安全实现原理全解析
java·后端
Mars酱10 分钟前
1分钟编写贪吃蛇 | JSnake贪吃蛇单机版
java·后端·开源
devpotato11 分钟前
人工智能(四)- Function Calling 核心原理与实战
java·人工智能
默 语18 分钟前
Records、Sealed Classes这些新特性:Java真的变简单了吗?
java·开发语言·python
架构师老Y18 分钟前
013、数据库性能优化:索引、查询与连接池
数据库·python·oracle·性能优化·架构
Kel22 分钟前
PydanticAI 源码深潜:类型安全依赖注入与图执行引擎的双核架构解析
人工智能·python·架构
zjshuster27 分钟前
墨西哥中央银行网联清算系统接入总结
java·财务对账
小锋java123428 分钟前
SpringBoot 4 + Spring Security 7 + Vue3 前后端分离项目设计最佳实践
java·vue.js·spring boot
卷心菜狗29 分钟前
Python进阶-深浅拷贝辨析
开发语言·python
一 乐29 分钟前
校园线上招聘|基于springboot + vue校园线上招聘系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·校园线上招聘系统