写点什么

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

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

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

关注

评论

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

PhotoSweeper X for Mac 重复照片清理工具

晨光熹微

AeroSpace - macOS上的i3风格平铺窗口管理器

qife122

macos swift

优测推出HarmonyOS全场景测试服务,解锁分布式场景应用卓越品质!

优测云服务平台

HarmonyOS harmony HarmonyOS NEXT

结构型模式-架构解耦与扩展实践

不在线第一只蜗牛

架构 开发

RustRover 2025 for Mac 高效Rust开发工具

晨光熹微

Plug And Mix VIP Bundle 人声处理插件

晨光熹微

以AI智能技术破解中小电商 “服务短板” 困境

极客天地

从分析到优化:Amazon Q CLI 助力 EKS 网络调用链剖析与运维实践

亚马逊云科技 (Amazon Web Services)

Dropzone 4 for Mac 文件快捷拖放管理工具

晨光熹微

MD文档转换工具Deckset for Mac

晨光熹微

Airmail 5 for Mac 轻量级邮件客户端

晨光熹微

性能优化:两条SQL索引优化,CPU占用率从40%降至25%

电子尖叫食人鱼

数据库 sql

强大专业的HTML文本代码编辑器BBEdit for mac

晨光熹微

Perfectly Clear Workbench for mac智能图片瑕疵处理工具

晨光熹微

基础模型选择指南:如何为生成式AI投资保驾护航?

澳鹏Appen

基础模型 生成式 AI 应用 IDC报告

在AI时代,挖掘用户真实需求比实现功能更具挑战性——轻量级高性能的macOS屏幕录制工具需求探索

qife122

需求分析 产品优化

破 400!Apache SeaTunnel 成为全球开发者共建热土

白鲸开源

人工智能 开源 云数据仓库 Apache SeaTunnel AI 文档

行业分享丨智能网联时代,电磁仿真如何 “打全场”?

Altair RapidMiner

电磁 汽车 仿真 CAE 航空航天

2025 年非关系型数据库全面指南:类型、优势

镜舟科技

sql 数据分析 数据存储 非关系型数据库 StarRocks

SeaTunnel 云仓连接器使用指南 | AI 助手解读系列

白鲸开源

开源 云数据仓库 Seatunnel AIGC AI 文档

盈米基金与阿里云达成AI全栈战略合作

盈米AI开放平台

企业AI 全栈云 MCP Server

DataSpell 2025 for Mac 专业数据科学家的IDE

晨光熹微

微信公众号/小程序百万级OpenID自动化获取工具

Allen_Lyb

微信

「宇树科技」启动IPO,商业化瓶颈剖析和近30家产业链公司梳理

机器人头条

人形机器人 具身智能 宇树科技 智元机器人

基于YOLOv8的农作物叶片病害、叶片病斑精准识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

SpringBoot--如何创建自己的自动配置

量贩潮汐·WholesaleTide

spring

二次开发必看!DolphinScheduler 3.1.9 开发环境搭建指南

白鲸开源

大数据 开源 大数据任务调度 Apache DolphinScheduler 二次开发

深度解读《指标+ AI 数智应用白皮书》,开辟智能问数与分析决策新范式

袋鼠云数栈

AI 数字化转型 指标 指标管理 数智应用

万界星空科技铜线/漆包线行业智能化MES系统解决方案

万界星空科技

mes 漆包线mes 铜线mes 漆包线 漆包线工厂

3D建模解决方案Agisoft Metashape Professional for mac

晨光熹微

RDS (Relational Database Service) 介绍

SkyBuilds

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