美文网首页
垃圾回收算法

垃圾回收算法

作者: 一只dororo | 来源:发表于2017-09-11 11:18 被阅读0次

一、引用计数(Reference Counting)算法

Internet Explorer 8以下的DOM和BOM使用COM组件所以是引用计数来为DOM对象处理内存,引用计数的含义是跟踪记录每个值被引用的次数。形象点说:

1)有很多便签纸,这些纸就好比是内存。

2)使用内存,就好比在这些纸上写字。但是,有个条件,任何使用一张纸的人,必须在纸的一角写上计数1,如果2个人同时使用一张纸,那么计数就变成2,以此类推。当一个人使用完某张纸的时候,必须把角上的计数减1,这样,一旦当计数变为0,就满足了垃圾回收条件,等在一旁的机器人会立即把这张纸扔进垃圾箱。

但这个算法存在一个缺陷,就是一旦产生循环引用,内存就会被泄露。

二、标记-清除(Mark-Sweep)算法

当变量进入执行环境的时候,比如函数中声明一个变量,垃圾回收器将其标记为“进入环境”,当变量离开环境的时候(函数执行结束)将其标记为“离开环境”。形象点说:

1)领导发给职员们一些便签纸,随便用,不需要做什么记号。

2)用到某个时候,领导命令所有人停下来,这时,每个人将自己仍然需要使用的白纸上做一个记号。

3)最后领导会把那些没有记号的白纸全部扔进垃圾箱。

4)这个算法的缺陷也很明显,首先是效率问题,为了标记,必须暂停程序,长时间进行等待。

其次,标记清除算法会造成内存碎片,比如被标记清除的只是一些很小的内存块,而我们接下来要申请的都是一些大块的内存,那么刚才清除掉的内存,其实还是无法使用。

三、复制(copying)算法

mark-sweep算法效率低下,由此,又产生了一种新的算法。

1)把全部便签纸分成两份

2)所有人都在左边,便签纸随便用,当领导说停下来,这次不做记号,只要带着还需要的便签纸转移到右边去就可以。

3)那些没用的纸自然就剩了下来,然后把这些纸扔到垃圾箱中,下次执行垃圾回收的时候采用同样的方式,只不过这次从右边向左边迁移。

4)这种算法的效率奇高,可惜,对内存的消耗太大,尤其是在1960年,内存可比黄金贵多了,直接砍掉一半的内存,显然是无法接受的。

转载更改自www.cnblogs.com/strick/p/4001675.html

相关文章

  • JVM垃圾回收

    GC垃圾回收流程 垃圾收集算法 垃圾回收算法 引用类型 垃圾回收的时机 1.垃圾收集算法 (1).引用计数算法含义...

  • JVM垃圾回收算法

    Java基础:JVM垃圾回收算法 [toc] 参考:Java基础:JVM垃圾回收算法图解JVM垃圾回收算法 总结:...

  • 垃圾回收算法、回收机制与总结 ---JVM

    垃圾回收算法、回收机制与总结 ---JVM 一、垃圾回收算法 1.标记清除 标记--清除算法将垃圾回收分为两个阶段...

  • JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比

    谈垃圾回收器之前,要先讲讲垃圾回收算法,以及JVM对垃圾的认定策略,JVM垃圾回收器是垃圾回收算法的具体实现,了解...

  • JVM - 垃圾回收算法

    JVM - 垃圾回收算法 这里只介绍垃圾回收算法的思想,不关注具体的算法细节垃圾回收算法发展已经有很长的历史 问题...

  • JVM(七)垃圾收集器

    1. 垃圾收集器概述 1.1 垃圾回收器与垃圾回收算法 垃圾回收算法分类两类,第一类算法判断对象生死算法,如引用计...

  • 一文了解JVM全部垃圾回收器,从Serial到ZGC

    《对象搜索算法与回收算法》介绍了垃圾回收的基础算法,相当于垃圾回收的方法论。接下来就详细看看垃圾回收的具体实现。 ...

  • 一文了解JVM全部垃圾回收器,从Serial到ZGC

    《对象搜索算法与回收算法》介绍了垃圾回收的基础算法,相当于垃圾回收的方法论。接下来就详细看看垃圾回收的具体实现。 ...

  • JVM垃圾回收算法

    垃圾是指死掉的对象,其回收涉及回收算法和回收器。这篇文章只谈论垃圾回收算法。 1、标记-清除算法(Mark-Swe...

  • GC原理,有哪几种GC方式?

    标记-清除 算法 引用计数法 复制算法 标记-压缩 算法 分代垃圾回收 增量式垃圾回收算法 RC Immix 算法

网友评论

      本文标题:垃圾回收算法

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