文档章节

可达性分析算法

ChyiHuang
 ChyiHuang
发布于 2017/08/10 09:03
字数 310
阅读 5
收藏 0
点赞 0
评论 0

在主流的商用程序语言(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方法)引用的对象。

© 著作权归作者所有

共有 人打赏支持
ChyiHuang
粉丝 0
博文 44
码字总数 37620
作品 0
朝阳
程序员
对象已死?

1、引用计数算法 给对象中添加一个引用技术器,没当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器值0的对象就是不可能再被使用的。其实现很简单,大部分...

低调的浮躁 ⋅ 2014/07/02 ⋅ 2

三、垃圾收集之判断对象是否存活

一、引用计数算法 当有一个地方引用这个对象时,计数器加1 当引用失效时,计数器减1 当计数器为0时,则对象死亡,等待回收 二、 可达性分析算法 若一个对象无法通过引用链接到GC Roots时,则...

Swimmer ⋅ 2016/11/30 ⋅ 0

Java虚拟机之内存管理

内存模型 一说到内存管理,首先需要了解它的内存模型。 虚拟机的内存模型在jdk1.8之后有了一些变化,我们分开来看,请看下图: 由图我们可以看出,jdk每个版本都会有新生代和老年代,唯一不同...

lynnlovemin ⋅ 2017/09/19 ⋅ 0

Java的垃圾回收机制-垃圾收集算法(一)

当需要排查各种内存溢出,内存泄漏等问题时,当垃圾收集成为系统达到更高并发的瓶颈时,我们有必要深入GC的原理。 常见垃圾回收算法 在查看垃圾回收具体过程的时候,运行程序加上: -XX:+Pri...

艾贺521 ⋅ 06/19 ⋅ 0

Java垃圾回收(GC)机制详解

如何找到要回收的垃圾 1、引用计数法 2、可达性分析法 三、四种引用状态 1、强引用 2、软引用 3、弱引用 4、虚引用 五、垃圾收集算法 1、标记-清除(Mark-Sweep)算法 2、复制(Copying)算法...

细节探索者 ⋅ 04/26 ⋅ 0

Lua GC算法中是否存在“循环引用”问题

Lua GC算法中是否存在“循环引用”问题 codedump2017-11-061 阅读 Lua 前几周到北京参见Openresty 2017大会,在会上分享了Lua 5.1 GC原理相关的内容。 其中提到,Lua采用的扫描标记算法,较之...

codedump ⋅ 2017/11/06 ⋅ 0

JVM垃圾收集方法

如何判断对象是否还存活? 1.引用计数法 有一个缺点是不能解决循环依赖问题 2.可达性分析 常用的作为根的主要在全局性的引用与执行上下文中 虚拟机栈中的引用的对象 方法区中常量引用的对象 ...

zdatbit ⋅ 03/06 ⋅ 0

JVM系列扩展:常见垃圾回收算法

对象存活算法 在回收垃圾对象之前,垃圾收集器需要确认哪些对象“存活”和那些对象应该被回收 引用计数(Reference Counting) 引用计数是最古老的一种算法,在微软的COM组件技术,Adobe的A...

那位先生 ⋅ 2016/10/16 ⋅ 0

我也来谈一谈Java GC

以前写c/c++的时候虽然也有shared_ptr这样的自动内存管理机制,但是它内部其实是通过引用计数的原理进行内存管理的,容易产生循环应用的问题,也没有什么实际意义上的内存收集器。和java的内存收...

嘉伟咯 ⋅ 2017/11/10 ⋅ 0

Kosaraju算法的分析和证明

Kosaraju算法是求解有向图强连通分量(strong connected component)的三个著名算法之一,能在线性时间求解出一个图的强分量。用Sedgewick爷爷的话说,就是“现代算法设计的胜利”。 什么是强...

liangtee ⋅ 2013/03/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部