惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
J
Java Code Geeks
小众软件
小众软件
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - Franky
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
腾讯CDC
T
The Blog of Author Tim Ferriss
大猫的无限游戏
大猫的无限游戏
量子位
M
MIT News - Artificial intelligence
Last Week in AI
Last Week in AI
L
LangChain Blog

博客园 - 老三

“内部开源” 视野,自学,和其他 反编译yield未解决问题记录 编译,调试mono运行时 确实,是有学习曲线的 mono 执行顺序 UTF8编码 *nix mono 找不到 MySql.Data Could not be loaded *nix,mono运行reflector MD5加密引出的一段代码 【翻译】正确的精神 11期Beta技术沙龙总结体会 记一次Cookie调试 Hubble.net Maillist 【译文】版本一很糟,但也坚持发布 《重构》读书体会以及近期相关工作 NHibernate no session or session was closed问题以及NH最佳实践 推荐the productive programmer Vim 还是 Emacs
mono 的Sgen
老三 · 2010-06-03 · via 博客园 - 老三

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)