50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

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

关注

评论

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

短视频云端批量混剪实操指南

阿里云CloudImagine

云计算 短视频 视频云 云剪辑

直播回顾 | 一体化智能可观测平台如何保障电商节大促

博睿数据

可观测性 智能运维 博睿数据 618 电商行业

在 Go 中如何使用 database/sql 来操作数据库

江湖十年

MySQL 后端 Go 语言

想要更好地理解大模型架构?从计算参数量快速入手

Baihai IDP

人工智能 Transformer 大模型 白海科技 企业号 6 月 PK 榜

Amazon CodeWhisperer 编程助手试用总结

Hanson

数据可视化设计四大原则透析

搞大屏的小北

数据可视化 设计要素 大屏设计

“全球金牌课程”8月5-6日 · CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum

敏捷教练 Scrum Master CSM 敏捷项目管理

构建系列之新一代利器Esbuild(上)

江湖修行

cli 构建 esbuild 前端‘’

HummerRisk获中国开源创新大赛优秀奖

HummerCloud

开源 云安全

浪潮 KaiwuDB x 大数据中心 | 数据驱动政府治理能力快速提升

KaiwuDB

KaiwuDB 大数据中心建设

架构师日记-从技术角度揭露电商大促备战的奥秘 | 京东云技术团队

京东科技开发者

京东云 企业号 6 月 PK 榜 京东618

【差分隐私】基本原理与入门级应用 | 京东云技术团队

京东科技开发者

京东云 差分隐私算法 企业号 6 月 PK 榜

KaiwuDB 受邀亮相山东省数字化转型论坛

KaiwuDB

数字化转型 KaiwuDB

深度学习应用篇-自然语言处理-命名实体识别[9]:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)

汀丶人工智能

人工智能 自然语言处理 深度学习 命名实体识别 6 月 优质更文活动

科兴未来|2023”福地句才”海外人才创业大赛

科兴未来News

【Netty】「萌新入门」(一)Hello, World!

sidiot

Java 后端 Netty 6 月 优质更文活动

喜讯 | 华秋电子荣获证券时报年度高成长企业

华秋电子

通过技术变革,推动全面预算管理前行

智达方通

全面预算管理

赋能矿山 | KaiwuDB 智慧矿山解决方案

KaiwuDB

解决方案 智慧矿山 KaiwuDB

数据分析:电子商务需要关注的重要指标有哪些?

搞大屏的小北

电子商务 销售指标

科兴未来|2023年扬中高层次人才创新创业大赛

科兴未来News

STM32通过ADC1读取光敏电阻的值转换光照强度

DS小龙哥

6 月 优质更文活动

微服务之负载均衡

Disaster

微服务

Flink实现高效实时处理百万级数据:实践与优化

xfgg

flink 6 月 优质更文活动

千万级数据的可视化交互展示:Vue.js 技术解析

xfgg

Vue eCharts 6 月 优质更文活动

深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等

汀丶人工智能

人工智能 自然语言处理 深度学习 命名实体识别 6 月 优质更文活动

京东购物车分页方案探索和落地 | 京东云技术团队

京东科技开发者

京东云 京东商城 企业号 6 月 PK 榜 6 月 优质更文活动

Java线程池三、调优和性能优化

echoes

Java 线程池

相约未名湖畔,百度商业AI技术创新大赛携手北大学子共探AI发展

百度Geek说

人工智能 百度 企业号 6 月 PK 榜

平台即产品:数字化转型的全新驱动力

SEAL安全

平台工程 平台即产品

分享几款 Mac 上非常好用的的免费软件

搞大屏的小北

数据可视化 数据库工具 截图软件 视屏转 gif 视频号下载

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