mono 的Sgen

mono 最开始使用的是 Boehm-Demers-Wiser Conservative Garbage Collector ,作为默认的垃圾收集器也是这个。

 

后来mono有了自己的 Simple Generational GC , 就是 Sgen. 从邮件列表中的一些测试结果来看,这个Sgen的时间效率已经和Boehm非常接近,内存方面更加优秀。

 文档地址:http://www.mono-project.com/Compacting_GC , 注意sgen一直在开发,其内容可能和现在的不同

 

之前看了一下,总结一下:

  1. 分为两代
  2. 大对象特殊处理,默认大于64KB作为大对象
  3. 小对象采用get_internal_mem/free_internal_mem 进行内存分配处理,大对象实用OS的malloc/free
  4. major collection 的时候采用 mark/sweep
  5. 收集进行时是 “stop the world”
  6. 保守扫描对象
  7. 老一代指向新一代的情况只有下面两种,所以都进行了跟踪:
  • 程序执行中,一个字段进行了赋值
  • 在复制(代移动)过程中,这个对象指向了一个新一代中的对象

 

参考 : http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)

posted on 2010-06-03 16:09  老三  阅读(1753)  评论(1编辑  收藏  举报

导航