ruby
拉里山姆
这个作者很懒,什么都没留下…
展开
-
Ruby源文件指引
http://aiku.me/bar/10113853Ruby的一些源文件的用途:Ruby语言核心:class.c class相关API error.c 错误相关API eval.c eval 相关 gc.c 垃圾收集 object.c 对象系统 parse.y 解析转载 2014-02-25 10:19:34 · 983 阅读 · 0 评论 -
Ruby的GC机制源码分析(2)
http://aiku.me/bar/10113853停止与复制停止与复制型GC 是标记与清除型GC 的一个变体。首先,准备多个对象域。为了简化讨论,假设只有两个域:A 和B 。将一边标记为“active” ,生成的对象都放到active 域中(图5 )。 图5: 停止与复制(1 )执行GC 时,按照标记与清除同样的路径进行搜索。但是,与标记不同的是,对象本身移转载 2014-02-25 10:23:38 · 763 阅读 · 0 评论 -
Ruby源码分析(struct)
http://blog.huahua8.cn/2012/01/08/parser-ruby-src.html2012-01-08 - hhuai首先看一下RClass, RObject, RBasicObject之间的关系struct RBasic { unsigned long flags; VALUE klass;};struct RObject转载 2014-02-25 10:22:19 · 1190 阅读 · 0 评论 -
Ruby的GC机制源码分析(1)
http://aiku.me/bar/10113853本文来自作者的日文书 GC 可以做的事讨论GC 算法之前,需要解释一下“GC 是什么” 。也就是说,“ 无用的内存” 处于一种怎样的状态。为了让讨论更加具体,将对象间的链接结构简化。也就是图3 所示的状态。 图3: 对象首先,全局变量所指的而且在语言堆栈上的对象“ 确实必要” 。对象实例变量所指的对象也是必要转载 2014-02-25 10:22:52 · 824 阅读 · 0 评论 -
Ruby的GC机制源码分析(4)
http://aiku.me/bar/10113853标记正如说过的那样,ruby 的GC是标记和清除型。具体来说,标记就是设置FL_MARK 标志。搜索已用的VALUE ,设置FL_MARK ,全部检查过之后,再来看对象堆,释放那些没有设置FL_MARK 的对象。rb_gc_mark()rb_gc_mark() 是一个递归标记对象的函数。▼ rb_转载 2014-02-25 10:25:29 · 767 阅读 · 0 评论 -
C-Ruby源码分析-1
http://hi.baidu.com/xosjfkixdgbqvyr/item/66658410b9773a14e2f986ee最近在读 Ruby 的源码,我分析的是Ruby-lang上 的C-Ruby 1.8.7-p72的版本。大致地浏览了Ruby的源码目录结构,用cloc统计了一下,算上扩展库里面的东东,C-Ruby 1.8.7-p72 的代码量已经达到了15万行左右转载 2014-02-25 10:20:08 · 1060 阅读 · 0 评论 -
C-Ruby源码分析-2( RNode 结构浅析)
http://hi.baidu.com/xosjfkixdgbqvyr/item/16367dfaf8e56b0984d278f0最近结合语法树的生成及解释执行的过程分析了一下C-Ruby中RNode结构体的设计。RNode是用于记录C-Ruby解析源文件过程中所生成的语法树结点的重要数据结构。在C-Ruby解析源文件的过程中,会在读入源文件内容的同时建立相应的语法结点,转载 2014-02-25 10:20:33 · 1022 阅读 · 0 评论 -
Ruby的GC机制源码分析(3)
http://aiku.me/bar/10113853对象的管理ruby GC 的目标只是Ruby 的对象。而且一定要是ruby 生成和管理的对象。反过来说,它无法照料到用户随意分配的内存。比如,下面的函数在ruby 的操作中就会引起内存泄漏 void not_ok(){malloc(1024); /* 获得内存后丢弃 */}然而下面的函数不会引起内存泄漏。转载 2014-02-25 10:25:02 · 720 阅读 · 0 评论