产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

  • 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:131747
用户头像

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

关注

评论

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

开发体育直播平台的商业创新:多元化收入模式引领行业转型

软件开发-梦幻运营部

Databend 源码阅读: Storage 概况和 Read Partitions

Databend

学习Python过程中容易遇到的问题及其解决办法

Geek_7d9e0b

#python

软件测试/人工智能|一文告诉你ChatGPT原理与架构

霍格沃兹测试开发学社

腾讯云的云上容灾实践

腾讯云混沌演练平台

容灾

为什么Facebook运营需使用IP代理?有哪些美国IP代理好用?

Geek_bf375d

软件测试/人工智能|利用ChatGPT进行项目需求分析

霍格沃兹测试开发学社

【AI编程助手】Devchat解析:深入了解、快速配置与实际应用

快乐非自愿限量之名

人工智能 DevChat AI编程

一些有趣的迹象:“前端已死”难道要成真了?

伤感汤姆布利柏

程序员 Vue 前端

为什么现在的低代码平台大多被抵制?

代码生成器研究

编程 程序员 低代码 代码

解锁编程潜能:探索亚马逊CodeWhisperer,打造编程世界的声音引导者

熬夜磕代码、

亚马逊云科技

2023如何搭建优质独享美国IP?美国静态住宅代理IP哪里有?

Geek_bf375d

.NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth

快乐非自愿限量之名

.net 开发 第三方登录

后端除了增删改查还有什么?

秃头小帅oi

Acrobat Pro DC 2023 for mac(专业PDF编辑软件)v2023.006.20320中文激活版

mac

Acrobat Pro DC 2023 苹果mac Windows软件 PDF编辑和管理软件

物联专栏丨物联网技术的挑战与趋势

inBuilder低代码平台

物联网

为什么我认为开源低代码平台不可靠?

代码生成器研究

开源 程序员 互联网 低代码

李开复再度回应争议;10 月中国游戏厂商及应用出海收入 30 强出炉丨 RTE 开发者日报 Vol.86

声网

外贸必看|Kakao账号如何注册使用?如何实现Kakao多开?

Geek_bf375d

软件开发提效工具——低代码(Low-Code)

互联网工科生

低代码 数字化

大会技术“硬核”资讯来啦!点击预约 IoTDB 现场一对一调优咨询服务

Apache IoTDB

软件测试/人工智能|教你如何更高效地使用AI对话工具

霍格沃兹测试开发学社

C++ IDE:最适合 C++ 初学者的 IDE 是什么?

ide 初学者 C++

ClickHouse联合创始人、前Google副总裁Yury到访杭州玖章算术公司,双方建立生态合作

NineData

Clickhouse 数据复制 合作伙伴 SQL开发 NineData

MATIC WORLD智能合约DAPP质押项目系统开发

l8l259l3365

好用且强大——JNPF永远的神

高端章鱼哥

软件开发 低代码

流程图是什么?一文弄懂流程图 - 定义 | 流程图符号 | 流程图如何制作

彭宏豪95

流程图 在线白板 画图工具 效率软件 流程图绘制

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