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

垃圾对象回收

1.如何判断对象可以被回收

对象是否可以被回收通常由垃圾回收器决定。

垃圾回收器使用一种称为"可达性分析"的算法来确定对象是否可被回收。
可达性分析是指如果一个对象无法从任何GCRoots直接或间接访问到,它就被认为是不可达的,可以被垃圾回收。

1.1 GC Roots

GC Roots是一组特殊的引用,它们被认为是程序中可访问对象的起始点,即从这些引用开始,可以追踪到所有仍然被程序引用的对象。

1.2 GC Root 引用类型

  • 局部变量引用
    在方法中定义的局部变量,包括方法的参数和局部变量,通常被视为GC Roots。这些变量的引用指向了对象的实例。
  • 活动线程引用
    正在运行的线程的引用通常被视为GC Roots。线程本地存储中的对象也是如此。
  • 静态变量引用
    静态变量是类的一部分,它们的引用也被视为GC Roots。静态变量存在于类加载器的内存中。
  • JNI 引用
    通过Java Native Interface(JNI)创建的本地代码引用也可以被视为GC Roots。这些引用连接了Java堆内存和本地代码的内存。
  • 虚拟机引导类加载器
    虚拟机内部使用的类加载器引用也是GC Roots。它们通常是一些核心类或库。

相关文章:

  • 2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业​​认证
  • 青藏高原东北部祁连山地区250m分辨率多年冻土空间分带指数图(2023)
  • [虚幻官方教程学习笔记]深入理解实时渲染(An In-Depth Look at Real-Time Rendering)
  • LeetCode热题100--240.搜索二维矩阵--中等
  • kotlin flow防抖
  • 聊一聊接口测试时如何处理接口或版本变更
  • 基于STM32的甲醛检测
  • Win10无法上网:Windows 无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目找不到域 TEST 的域控制器DNS 解析存在问题
  • Git简介和发展
  • LeakCanary
  • 6. 存储池配置与CephFS创建 ceph version 14.2.22
  • Java 中的反射详解
  • 发行基础:本地化BUG导致审核失败
  • 【AlphaFold2】深入浅出,Feature Embedding|学习笔记
  • ev_loop_fork函数
  • 【部署】win10的wsl环境下调试dify的api后端服务
  • 初学者入门指南:什么是网络拓扑结构?
  • Java后端开发day46--多线程(二)
  • 互联网大厂Java求职面试实战:Spring Boot微服务与数据库优化详解
  • rust-candle学习笔记12-实现因果注意力
  • 巴西总统卢拉抵达北京
  • 异域拾异|大脚怪的形状:一项神秘社会学研究
  • 洞天寻隐·学林纪丨玉洞桃源:仇英青绿山水画中的洞天与身体
  • 咖啡戏剧节举办第五年,上生新所“无店不咖啡,空间皆可戏”
  • 印巴冲突升级,巴防长称已击落5架印度战机
  • 印度导弹凌晨打击巴基斯坦多座设施,巴总理:正对战争行为作有力回应