当前位置: 首页 > 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中注册的回调、本地代码缓存对象的引用等。

http://www.lqws.cn/news/567775.html

相关文章:

  • 矩阵的逆 线性代数
  • rabbitmq springboot 有哪些配置参数
  • 打卡day57
  • WebRTC系列:(一)MacOS开发环境搭建(Vscode + Clangd)
  • Ubuntu开放mysql 3306端口
  • 现代 JavaScript (ES6+) 入门到实战(八):总结与展望 - 成为一名现代前端开发者
  • NLP随机插入
  • 复旦大学经济学院系统思考训练
  • MyBatis批量删除
  • [论文阅读]MISSRce
  • Elasticsearch 索引设计与性能优化实战指南
  • M1芯片最终oracle成功版本拉取方法及配置
  • 二叉树找到下一个中序遍历节点的思路
  • foreach、for in 和for of的区别
  • VMware报错问题解决记录
  • NAND Flash BCH和FTL
  • 聊聊横向移动中的实际技术点 ----- ResponderSMB
  • FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南
  • 驱动开发系列58 - 揭开内核IRQ框架的神秘面纱
  • 对基尼指数作出的努力
  • jenkins启动报错,一直无法启动
  • 介绍Windows下的由Sysinternals开发的一些小工具
  • 实战篇----利用 LangChain 和 BERT 用于命名实体识别-----完整代码
  • OpenAI 系列大模型发展时间轴与主要特性
  • 用Flink打造实时数仓:生产环境中的“坑”与“解药”
  • Mac homebrew 安装教程
  • linux系统---Nginx反向代理与缓存功能
  • Springboot 集成 SpringState 状态机
  • 代码随想录打卡第一天
  • C语言中常见字符串处理函数