写点什么

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

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

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

关注

评论

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

MySQL数据库中SQL语句分几类?

小齐写代码

KaiwuDB 通过中国信通院“可信数据库”性能与稳定性评测

KaiwuDB

KaiwuDB 可信数据库

三分钟搞懂Serverless,互联网个人创业者必备

凌览

node.js Serverless 独立开发者

Mac电脑强大的fcpx视频剪辑:Final Cut Pro 中文最新

胖墩儿不胖y

视频处理工具 编辑视频 视频编辑器 视频管理

如何在 Mac 上创造一个纯 Windows 环境

Rose

Parallels Desktop

加速数智化升级,华为云这款服务器让企业上云更轻松

轶天下事

极狐GitLab 16.6 如约而至,更好的 DevOps 体验,赶快升级使用吧!

极狐GitLab

DevOps gitlab CI/CD DevSecOps MR

淘宝订单接口在电商行业中的重要性及其实践

Noah

畅捷通的 Serverless 探索实践之路

Serverless Devs

云计算 Serverless AIGC

​iOS Class Guard github用法、工作原理和安装详解及使用经验总结

苹果Macos好玩的经典游戏推荐!

Rose

mac游戏 苹果mac游戏 Mac游戏推荐

低代码平台在数字化转型过程中的定位

明道云

HarmonyOS开发案例分享:万能卡片也能用来玩游戏

HarmonyOS开发者

HarmonyOS

咨询+低代码,强强联合为制造业客户赋能

明道云

如何编译你的C程序 | AI工程化部署

AIWeker

c AI工程化部署

KeyShot2023pro安装包 附KeyShot注册机 适用于Mac/win

Rose

KeyShot2023pro安装包 KeyShot 注册机 3D渲染和动画软件

企业服务大模型扎根生产一线,用友BIP为中国智造“再续新篇”!

用友BIP

企业大模型

企业上云请认准华为云这款服务器,数字化时代安全可靠的引擎

轶天下事

Final Cut Pro for Mac(fcpx视频剪辑)v10.7.0 中文版

Rose

mac软件下载 Final Cut Pro中文版 Final Cut Pro破解版 fcpx 视频剪辑软件

Mac视频转码编辑工具 Compressor 4.7中文激活版 现已支持M3 Mac

Rose

Compressor Mac下载 Compressor破解版 Mac视频编码工具 Compressor for mac

记一次线上视频接口OOM问题

xfgg

Java

AnyGo for Mac(在iPhone / iPad上轻松模拟GPS位置)v6.9.0激活版

Rose

AnyGo中文版 AnyGo for Mac Mac虚拟机定位 GPS位置 AnyGo破解版

初识 OpenCV

数新网络官方账号

OpenCV 计算机视觉

用户注册这样玩,保你平安

越长大越悲伤

Java 后端 注册

Logic Pro X v10.8.1中文破解版 mac音频制作

Rose

mac音乐制作软件 Logic Pro破解版 Logic Pro下载

iMovie for Mac v10.4.0中文版 支持Macos14系统 兼容M3 Mac

Rose

iMovie Mac破解版 Mac视频剪辑工具 iMovie mac版 iMovie中文版下载

一起学Elasticsearch系列-脚本查询

Java随想录

Java 大数据 Elastic Search

RazorSQL for Mac(多功能SQL数据库管理器)支持M1/M2 v10.5.0注册激活版

Rose

数据库 RazorSQL下载 RazorSQL注册码

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