美文网首页
判活算法

判活算法

作者: jack_fd | 来源:发表于2018-11-07 15:37 被阅读0次

引用计数算法

很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。作者面试过很多的应届生和一些有多年工作经验的开发人员,他们对于这个问题给予的都是这个答案。

客观地说,引用计数算法(ReferenceCounting)的实现简单,判定效率也很高,在大部分情况下它都是一个不错的算法,也有一些比较著名的应用案例,例如微软公司的COM(Component Object Model)技术、使用ActionScript 3的FlashPlayer、Python语言和在游戏脚本领域被广泛应用的Squirrel中都使用了引用计数算法进行内存管理。但是,至少主流的Java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间相互循环引用的问题。

可达性分析算法

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

相关文章

  • 判活算法

    引用计数算法 很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器...

  • 判环算法以及链表常见算法题

    由于涉及到Floyd判环算法,故先简单阐述一下Floyd判环算法原理。Floyd判环算法算法原理:设置两个指针同时...

  • Floyd判圈算法(龟兔赛跑算法)

    点击查看原文一、算法简述 Floyd判圈算法(Floyd Cycle Detection Algorithm),又...

  • floyd判圈算法

    问题:如何检测一个链表是否有环,如果有,那么如何确定环的起点.要求 : 空间复杂度为O(1), 时间复杂度为O(n...

  • 判断最小生成树是否唯一 POJ --- 1679

    网上两种算法对应都有:题目链接 prim算法判最小生成树是否唯一 下面是这道题的AC代码: kruskal的算法,...

  • [Code] 闲聊判圈算法

    在LeetCode上看到一道题 #141 Given a linked list, determine if i...

  • 转载 闲聊判圈算法

    转载 闲聊判圈算法floyd(Floyd cycle detection) 问题:如何检测一个链表是否有环,...

  • 算法题:麻将判胡

    如题,没有字牌,不考虑牌种input: a[14] , 整数,1 <= ai <= 9,output: boole...

  • deepsort--track.py

    这个模块主要是用于跟踪算法的,用的是kalman filter+级联检测目标,基本算法是画轨迹,根据轨迹的情况,判...

  • 性能最高的麻将算法 -- lua

    关于这个算法的由来 今天是在公司写麻将算法的第四天,在第二天的时候已基本实现带N个癞子的麻将判胡算法,但是,性能太...

网友评论

      本文标题:判活算法

      本文链接:https://www.haomeiwen.com/subject/ahbulxtx.html