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

可达性分析算法-确定那些对象是垃圾(转)

在主流的商用程序语言(Java、C#,甚至包括前面提到的古老的Lisp)的主流实现中,都是称通过可达性分析(Reachability Analysis)来判定对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。如图3-1所示,对象object 5、object 6、object 7虽然互相有关联,但是它们到GC Roots是不可达的,所以它们将会被判定为是可回收的对象。

 

在Java语言中,可作为GC Roots的对象包括下面几种:

虚拟机栈(栈帧中的本地变量表)中引用的对象。

方法区中类静态属性引用的对象。

方法区中常量引用的对象。

本地方法栈中JNI(即一般说的Native方法)引用的对象。

参考:http://blog.csdn.net/jtracydy/article/details/61416634

更多:

http://blog.csdn.net/ochangwen/article/details/51406779

 

转载于:https://www.cnblogs.com/dragonsuc/p/6979702.html

相关文章:

  • Android之使用ContentResolver对通信录中的数据进行简单操作
  • Android之网络操作 - 从网络获取图片或网页
  • OpenGL学习--开发环境
  • jQuery常用总结(转载)
  • Android之把从网络中获取的数据以XML与Json格式返回
  • 抗锯齿的BUG
  • Spring Boot 定时任务的使用
  • VC2012编译CEF3-转
  • Android之用HTTP的get,post,HttpClient三种方式向service提交文本数据
  • PCB原理图库
  • mysql相关故障
  • Win7 打开网页超级慢的解决方案
  • Java并发和多线程3:线程调度和有条件取消调度
  • Android之使用Http协议实现文件上传功能
  • poi API大全
  • 【剑指offer】让抽象问题具体化
  • ECMAScript6(0):ES6简明参考手册
  • JSONP原理
  • Redux 中间件分析
  • Zsh 开发指南(第十四篇 文件读写)
  • 安装python包到指定虚拟环境
  • 安卓应用性能调试和优化经验分享
  • 笨办法学C 练习34:动态数组
  • 给github项目添加CI badge
  • 简单数学运算程序(不定期更新)
  • 嵌入式文件系统
  • 深入浏览器事件循环的本质
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 怎么将电脑中的声音录制成WAV格式
  • Java数据解析之JSON
  • ​io --- 处理流的核心工具​
  • ​香农与信息论三大定律
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #{} 和 ${}区别
  • #pragma once与条件编译
  • #pragma pack(1)
  • (1)(1.13) SiK无线电高级配置(五)
  • (4)(4.6) Triducer
  • (floyd+补集) poj 3275
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (八)Flask之app.route装饰器函数的参数
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (函数)颠倒字符串顺序(C语言)
  • (力扣)循环队列的实现与详解(C语言)
  • (四)图像的%2线性拉伸
  • (一)Java算法:二分查找
  • (一)kafka实战——kafka源码编译启动
  • (一)WLAN定义和基本架构转
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)linux下的时间函数使用
  • (转)memcache、redis缓存
  • (转)树状数组
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET : 在VS2008中计算代码度量值