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

相关推荐
火车叼位6 分钟前
使用 uv 工具在 Windows 系统快速下载安装与切换 Python
python
你不是我我17 分钟前
【Java开发日记】说一说 SpringBoot 中 CommandLineRunner
java·开发语言·spring boot
yuan1999718 分钟前
Spring Boot 启动流程及配置类解析原理
java·spring boot·后端
2301_8076064320 分钟前
Java——抽象、接口(黑马个人听课笔记)
java·笔记
心扬29 分钟前
python网络编程
开发语言·网络·python·tcp/ip
忧陌60632 分钟前
DAY 44 预训练模型
python
楚歌again35 分钟前
【如何在IntelliJ IDEA中新建Spring Boot项目(基于JDK 21 + Maven)】
java·spring boot·intellij-idea
酷爱码36 分钟前
IDEA 中 Maven Dependencies 出现红色波浪线的原因及解决方法
java·maven·intellij-idea
点云SLAM1 小时前
PyTorch 中contiguous函数使用详解和代码演示
人工智能·pytorch·python·3d深度学习·contiguous函数·张量内存布局优化·张量操作
尘浮7281 小时前
60天python训练计划----day45
开发语言·python