写点什么

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

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

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

关注

评论

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

前端代码编辑神器:sublime text 4(Win&Mac)中文注册版

你的猪会飞吗

mac软件下载 Sublime Text 4 破解版 Sublime Text 4下载 Sublime Text 4注册版

蓝易云 - ssh登录22号端口拒绝连接Ubuntu?

百度搜索:蓝易云

Linux 运维 Shell SSH 云服务器

蓝易云 - Ubuntu下运行QEMU模拟riscv64跑Debian

百度搜索:蓝易云

ubuntu 运维 云服务器 qemu Debian

轻量级的灰度&配置平台|得物技术

得物技术

架构 配置 稳定性 灰度 企业号2024年7月PK榜

绿电、DePIN+AI:塑造未来二十年金融体系的新兴基石

TechubNews

鸿蒙 NEXT 应用开发训练营毕业啦(毕业总结)

SamGo

鸿蒙 训练营 HarmonyOS 移动端 鸿蒙系统

【荣耀远航计划】应用市场·耀闪行动首发上线

荣耀开发者服务平台

honor 应用市场 开发者激励计划

【YashanDB数据库】yasboot查询数据库状态时显示数据库状态为off

YashanDB

yashandb 崖山数据库 崖山DB

项目管理达人推荐:顶级文档管理系统大比拼

爱吃小舅的鱼

文档管理

一键生成PPT?讯飞智文2.0迎来重磅升级!马斯克宣布人工智能模型Grok 2测试版即将发布|AI日报

可信AI进展

蓝易云 - Ubuntu22.04安装Mongodb7.0

百度搜索:蓝易云

mongodb 云计算 Linux ubuntu 运维

蓝易云 - 在PHP8中统计数组元素个数-PHP8知识详解

百度搜索:蓝易云

php Linux 运维 云服务器 PHP8

蓝易云 - 使用php获取时间今天、明天、昨天时间戳的详解

百度搜索:蓝易云

php 云计算 运维 云服务器 香港服务器

科大讯飞T20学生平板怎么样 科大讯飞T20参数

妙龙

科大讯飞 学习机

云高性能计算平台 CHPC 让企业的传统 HPC 玩出新花样

百度Geek说

百度智能云

打造企业专属人工智能助理

霍格沃兹测试开发学社

专题 | IAM业界热度不减,2024市场持续井喷(三)

芯盾时代

身份安全 数字化 iam 统一身份认证 零信任模型

必读|Postgres 如何在磁盘上存储和索引数据?

小猿姐

数据库 postgresql 容器

小间距LED显示屏:新时代的传播利器

Dylan

媒体 时代 LED LED display LED显示屏

TextIn文档树引擎,助力RAG知识库问答检索召回能力提升

合合技术团队

科技 文档识别 PDF解析

先锋鹏城,极速领航!深圳电信5G-A场景体验尊享权益正式发布

脑极体

通信

【第2期】INFINI Easysearch 免费认证培训开放报名啦

极限实验室

easysearch 极限科技

ICE.AI战略扩展亚太市场,创新交易模式及平台全面升级

科技热闻

第63期 | GPTSecurity周报

云起无垠

国内首个支持国产化信创的开源云原生平台

北京好雨科技有限公司

云原生 rainbond 企业号 8 月 PK 榜 国产化平台 信创国产化

HGDD 荣耀开发者日丨沙龙北京站现场亮点回顾

荣耀开发者服务平台

行业趋势 开发者沙龙 应用上架 荣耀开发者服务平台 开发者激励计划

Go语言中进行MySQL预处理和SQL注入防护

左诗右码

Go 语言

科大讯飞t20和c10 区别对比 评测

妙龙

科大讯飞 学习机

K8s 如何设置容器 /dev/shm 控制共享内存大小

江湖十年

k8s k8s管理 #k8s K8s 多集群管理 Kubernetes Serverless

BTC/ETH/IPFS云算力质押挖矿系统开发详细指南

V\TG【ch3nguang】

云算力质押挖矿系统

mac剪切板管理工具:Paste for Mac 免激活版

你的猪会飞吗

mac软件下载 Paste for Mac paste mac破解版

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