您的位置:首页 > 编程语言 > Ruby

关于Ruby的GC

2015-07-27 15:59 274 查看
对比Ruby和Python的GC

关于Ruby2.0的GC

Ruby的GC基于标记回收算法

RubyVM在启动之初就会新建好好大量的对象,放在一个空闲对象链表中(freelist),待代码新建对象时就可以很方便的取用。

这样被取用的对象就被从freelist里移除,freelist将越来越短。

最终freelist耗尽时,GC被触发。

首先,Ruby将停止程序的执行,Ruby使用了”停止这个世界,然后回收垃圾”的方式。
然后,Ruby会扫描所有的指向对象和值的指针或引用。同样,Ruby也会迭代虚拟机内部使用的指针。
它会标记每一个指针所能到达的对象。


接下来,Ruby将清理没有使用的,垃圾对象,将它们链入空闲对象链表(free list)

当多有的freelist里的对象都被标记为in use,ruby则会另外申请一整块heap memory。


这就是标记回收算法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: