AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

采用位图标记技术的垃圾收集器将会大幅改善内存占用

  • 2012-02-10
  • 本文字数:1122 字

    阅读完需:约 4 分钟

Ruby 1.9.3 最重要的特性就是引入了惰性垃圾收集清理器,这项工作是由中村成洋(InfoQ 此前有过相关报道)完成的,它极大地降低了最坏情况下垃圾收集器所需要的时间。在近期的一份文档中,中村成洋表示他已经实现了写时拷贝的位图标记垃圾收集器(简记bmap),这个收集器和Ruby 企业版的写时拷贝垃圾收集器很类似,都是通过使用POSIX 的fork 系统调用来降低内存需要,这个调用的巧妙之处在于让子进程共享父进程的内存,除非有修改才会拷贝。不幸的是,当前的Ruby 收集器并没有很好地利用这个特性

Ruby 使用的是标记清除垃圾收集技术。这项技术的特点是,垃圾收集器首先会遍历所有的对象,然后标记哪些正在使用,即设置 FL_MARK 标记位。然后收集器将会再遍历所有的对象,删除没有被标记的对象,并且释放空间。不过,问题是,这种技术和写时拷贝逻辑上有冲突:收集器可能会把所有的页都标记为脏。

InfoQ 联系了了中村成洋,希望得知他的 bmap 实现是如何改善现有惰性垃圾收集器的缺陷。他指出,位图标记算法拥有如下几个优点:

  • 相比每个对象有个头部位标记,位图对存储空间利用更加高效
  • 高局部性
  • 标记不会修改任何对象。而且清理也不会修改任何活动对象
  • 非常适合写时拷贝,脏缓存行很少
  • 我们使用 memset 来重置标记位
  • 清除操作将会快一些

在 CRuby 中,写时拷贝是非常重要的。Linux 环境下,位图标记技术将会显著改善使用 fork 程序的内存使用情况。而且在 CRuby 中,使用 fork 可以大幅提高并行性能。不仅如此,在库支持方面,也有很多采用了 fork 的库可供使用。(例如 Unicorn Resque

InfoQ:但是从性能方面来看,惰性垃圾搜集器降低了吞吐量,而且 bmap 也比当前的垃圾收集器略微慢一些。bmap 将会代替现有的垃圾收集器么?或者开发者和用户可以通过配置来选择使用哪种垃圾收集器?

我的计划是位图标记垃圾收集器将会是默认的垃圾收集器。至于你所提到的“bmap 略微慢一些”,的确是这样,不过,我认为性能下降程度仍然是在所有人可以接受的范围内。所以,我觉得用户并不需要这样的配置。

InfoQ:你也提到了你准备将位图标记技术应用到并行垃圾收集器中。听起来这将会大幅提高垃圾收集器性能,你能否透露一下这项技术将能够能够提高大概多少性能么(或者减少多少停顿时间)?

事实上我已经编写出了无位图标记技术的并行垃圾收集器。在某些情况下,我能够将运行在双核机器上的垃圾收集器性能提高 40%。应用位图标记技术之后,性能只会有微量降低。 我在 RubyConf US 2011 上已经详细地阐述了并行垃圾收集器(视频幻灯片)。

松本行弘也将位图标记垃圾收集器提交到了Ruby 代码库中,它将会随着下一个版本一同发布,我们认为这个版本将会是2.0 版。

查看英文原文: Bitmap Marking GC for Ruby Improves Memory Usage

2012-02-10 17:132008
用户头像

发布了 90 篇内容, 共 37.1 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

【论文速读】| 迈向自动化渗透测试:引入大语言模型基准、分析与改进

云起无垠

5款主流AI模型,千万Token免费用,体验极速智能!

轶天下事

《Django 5 By Example》阅读笔记:p651-p678

codists

Python django

9.9比9.11大0.79,让大模型准确地做好数学题

Kyligence

大模型 #人工智能 数学计算

如何通过对敏捷实践的调整,帮助远程团队提升研发效能?

思码逸研发效能

DevOps 研发效能 远程办公 研发效能度量 研发效能管理

抖音商品详情API接口对电商的作用及收益

科普小能手

API API 接口 抖音商品详情API接口 抖音API 抖音API接口

技术干货丨基于Radioss及HyperLife的车门SLAM疲劳分析

Altair RapidMiner

汽车 仿真 智能制造 altair Hypermesh

智源行业应用大模型挑战赛开启报名:挖掘数据潜能,共创行业新篇

智源研究院

Helius:从数据出发,衡量 Solana 的真实去中心化程度

TechubNews

15.模版模式设计思想

杨充

ETL没有自动化数据集成平台,你的BI报表只会让你错失先机

RestCloud

BI 数仓 ETL 数据集成

基于豆包MarsCode 和 Threejs 实现3D地图可视化

TRAE

人工智能 程序员 AI 开发 配置

制造业中小企业如何进行数字化转型?

积木链小链

数字化转型 数字化

全网最全商品模型设计方案,不接受反驳!

不在线第一只蜗牛

Java 人工智能 大数据

怎么制作职业生涯规划ppt?用这2个AI工具自动生成ppt!

职场工具箱

人工智能 职场 PPT AIGC AI生成PPT

全球IP地址库性能评测:数据覆盖与精确性研究

幂简集成

IP API

Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版

sysin

Linux RHEL orcle

GroovyShell 应用实践

FunTester

第75期 | GPTSecurity周报

云起无垠

网络安全、 LLMs

SD-WAN怎样实现企业混合云组网

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

IC China 2024北京开幕:英特尔分享洞察,促智能计算应用落地

E科讯

RAG系统高效检索优化指南:精准搭配BGE智源、GTE阿里与Jina等嵌入与精排模型

代码忍者

Rocky Linux 9.5 正式版发布 - RHEL 100% 1:1 兼容免费发行版

sysin

Rocky Linux RHEL

数造科技亮相第26届高交会并接受媒体采访,以数据智能赋能未来

数造万象

大数据 数据治理 数据开发 科技 大模型

采用位图标记技术的垃圾收集器将会大幅改善内存占用_Ruby_Mirko Stocker_InfoQ精选文章