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

可达性分析算法Test

可达性分析算法相对于引用计数算法而言,可达性分析算法同样具备实现简单和执行高效等特点,更重要的是,该算法可以有效地解决在引用计数算法中循环引用的问题,防止内存泄漏的发生,这个算法目前较为常用。Java语言选择使用可达性分析算法判断对象是否存活。这种类型的垃圾收集通常叫作追踪性垃圾收集(Tracing GarbageCollection),它的基本流程如下。可达性分析算法是以GC Root(根对象)​(见14.2.1节)为起始点,按照从上至下的方式搜索被根对象集合所连接的目标对象是否可达。GC Root不止一个,它们构成了一个集合,称为“GC Roots”​,所谓“GC Roots”集合就是一组必须活跃的引用。使用可达性分析算法后,内存中的存活对象都会被根对象集合直接或间接连接着,搜索所走过的路径称为引用链(ReferenceChain)。如果目标对象没有在引用链上,则表示对象是不可达的,就意味着该对象已经死亡,可以标记为垃圾对象。即在可达性分析算法中,只有引用链上的对象才是存活对象。

GC Roots集合
在Java语言中,GC Roots集合中的对象引用包括以下几种类型。虚拟机栈中对象的引用,比如,各个线程被调用的方法中使用到的引用数据类型的参数、局部变量等。本地方法栈内JNI(本地方法)对象的引用。方法区中引用数据类型的静态变量。方法区中常量对象的引用,比如字符串常量池(String Table)里的引用。所有被同步锁synchronized持有的对象引用。JVM内部的引用。基本数据类型对应的Class对象引用,一些常驻的异常对象引用(如NullPointerException、OutOfMemoryError)​,系统类加载器对象引用等。反映JVM内部情况的JMXBean、JVMTI中注册的回调、本地代码缓存对象的引用等。

相关文章:

  • 如何将Excel表的内容转化为json格式呢?
  • 深入理解Mysql索引底层数据结构和算法
  • InnoDB的redo日志涉及文件及结构
  • 嵌入式硬件中电容的基本原理与详解
  • WPF学习笔记(13)列表框控件ListBox与数据模板
  • Spring Boot项目开发实战销售管理系统——数据库设计!
  • 大模型在恶性心律失常预测及治疗方案制定中的应用研究
  • 计算机网络基础知识详解
  • 筑牢网络安全屏障
  • RabbitMQ 集群与高可用配置
  • 【安全有效新方案】WSL 默认路径迁移实战:通过 PowerShell 符号链接实现自动重定向
  • 【大语言模型入门】—— 浅析LLM基座—Transformer原理
  • 面试八股---HTML
  • 【51单片机节日彩灯控制器设计】2022-6-11
  • Linux的基础IO
  • Segment Anything in High Quality之SAM-HQ论文阅读
  • 浮油 - 3 相分层和自由表面流 CFX 模拟
  • 消息队列:Redis Stream到RabbitMQ的转换
  • 【libm】 7 内核余弦函数 (k_cos.rs)
  • 大模型本周进展(0623~0629)