当前位置: 首页 > news >正文

java 中判断对象是否可以被回收和 GCROOT

引用计数法(Reference Counting)

每个对象都维护一个引用计数器,当有一个地方引用该对象时,计数器加一;当引用失效时,计数器减一。
当计数器的值为零时,说明该对象不再被引用,系统就会认为它是垃圾,可以被回收。
实现简单,效率较高,能快速判断对象是否可以被回收。
循环引用问题:如果两个对象互相引用(形成循环依赖),它们的引用计数器不会为零,即使它们都无法被访问,引用计数法也无法回收它们。

可达性分析法(Reachability Analysis)

JVM 采用可达性分析算法来判断对象是否可以被回收。这个方法从一组称为 GC Roots 的根对象开始,沿着引用链进行遍历,能够到达的对象被认为是“存活”的,无法到达的对象被认为是不可达的,可以被回收。
没有循环引用问题:因为是通过可达性分析来判断对象是否可以回收,循环引用不会影响对象的回收。
更加准确,现代垃圾回收器大多基于这种方法。

GCROOT

在 Java 中,GC Root(垃圾回收根对象)是垃圾回收器进行内存管理的重要起点,任何从 GC Root 可达的对象都不会被垃圾回收。以下是 Java 中哪些对象可以充当 GC Root。

虚拟机栈中的引用对象

方法执行时,局部变量表中的所有引用类型变量(局部变量、方法参数等)都可以作为 GC Root。
当方法调用时,局部变量表中的对象引用始终可达,JVM 不会回收这些对象,直到方法结束后局部变量表被销毁。

public void exampleMethod() {
    Object obj = new Object(); // 局部变量 obj 是 GC Root
    // do something...
}

方法区中的静态变量

类的静态属性(static 修饰的变量)会随着类的加载进入方法区,并且静态变量会一直存在于内存中,直到类被卸载。因此,所有的静态变量也是 GC Root。

public class ExampleClass {
    private static Object staticObject = new Object(); // staticObject 是 GC Root
}

方法区中的常量

常量(如 final 修饰的常量)在类加载时就已经被初始化,它们存在于方法区中,可以作为 GC Root。

public class ExampleClass {
    private static final Object constantObject = new Object(); // constantObject 是 GC Root
}

本地方法栈中的 JNI 引用

JNI(Java Native Interface) 是 Java 调用本地(非 Java)代码的机制。在 JNI 中使用的引用也是 GC Root。JVM 通过本地方法栈来管理 JNI 的本地引用。
当 Java 调用 C/C++ 代码时,通过 JNI 持有的对象引用。

相关文章:

  • 每日Attention学习25——Multi-Scale Attention Fusion
  • 结构体1~5(1414. 期末考试成绩排名、1490. 坐标排序、1315. 遥控飞机争夺赛、1730. 购买贺年卡、1499. 宇宙总统2)
  • Windows Qt动态监测系统分辨率及缩放比变化
  • LGA封装 Z3588开发板,8K视频编解码
  • 设计模式使用Java案例
  • 《AI大模型趣味实战》No2 : 快速搭建一个漂亮的AI家庭网站-相册/时间线/日历/多用户/个性化配色(中)
  • Leetcode-131.Palindrome Partitioning [C++][Java]
  • RUOYI框架在实际项目中的应用三:Ruoyi微服务版本-RuoYi-Cloud
  • JAVA数据库技术(一)
  • Deepseek学习--工具篇之Ollama
  • 基于C#的以太网通讯实现:TcpClient异步通讯详解
  • 设置echarts legend 图例与文字对齐
  • 股指期货有卖不出去的时候吗?
  • 在线 SQL 转 flask SQLAlchemy 模型
  • ctf web入门知识合集
  • 阿里wan2.1本地部署
  • Webpack总结
  • MySQL配置文件my.cnf详解
  • 抽象工厂模式 (Abstract Factory Pattern)
  • 蓝桥杯专项复习——结构体、输入输出
  • 老旧小区加装电梯后续维护谁负责?上海:各区属房管集团托底保障
  • 杨国荣︱以经验说事:思想史研究中一种需要反思的现象
  • 中国证监会副主席李明:目前A股估值水平仍处于相对低位
  • 一周观展|一批重量级考古博物馆开馆:从凌家滩看到孙吴大墓
  • 福建、广西等地有大暴雨,国家防总启动防汛四级应急响应
  • 解读|战国子弹库帛书漂泊海外79年今归国,追索仍将继续