【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

SGen:Mono 的生代式垃圾收集器

  • 2011-01-27
  • 本文字数:729 字

    阅读完需:约 2 分钟

从 API 角度来看,Mono 正紧紧跟随着.NET 的脚步大踏步前进着,但有个关键领域 Mono 却落后了。Mono 中默认的垃圾收集器采用的是可移植、但却不太精确的 Boehm-Demers-Weiser 保守式垃圾收集器。Boehm 垃圾收集器的主要问题在于无法精确读取寄存器与栈帧。因为无法确定给定值到底是指针还是标量,因此它总是假设给定值是指针,并且将相关联的对象标记为存活状态。这么做不仅会错误导致大块内存无法分配,同时还使得压缩可用空间这项工作变得异常艰难。

SGen(Simple Generational)是 Mono 新一代的垃圾收集器。见名知意,这个持续了两年的项目正尝试替代 Mono 原来的垃圾收集器,它使用精确的分代式(generational)垃圾收集器,类似于.NET 版本的 CLR。SGen 垃圾收集器使用两生代而非.NET 中的三个,但像.NET 一样对于大对象使用独立的堆。

Mono 2.10 之前(现在仍处于预览版),SGen 仍旧是保守的。新版本增加了对托管栈帧的精确收集的支持,这样基本就不会遇到误报的问题了。来自于 p/invoke 调用的非托管栈帧仍旧使用保守的方式扫描。

类似于.NET,SGen 最大的缺陷在于固定对象。如果将对象固定在 SGen 中(想想.NET 中的 0 生代),那么它就无法彻底清除,这会导致内存碎片。由于几个原因,SGen 的这个问题甚至更糟。你不仅需要处理碎片,而且 SGen 需要从这些碎片中分配内存。理想情况下,所有的活动对象都应从 SGen 中复制出来,并且得到重用。

为了解决这些问题,SGen 并不仅仅像.NET 那样检测显示的固定对象。如前所述,对非托管栈帧的保守式扫描会导致对象的固定,这是因为栈中的数字值可能碰巧与内存地址一样。据推测,随着与 p/invoke 调用相关的逻辑变得更加可靠,这将在未来的版本中得到修复。

查看英文原文: SGen: Mono’s Generational Garbage Collector

2011-01-27 02:531367
用户头像

发布了 88 篇内容, 共 258.7 次阅读, 收获喜欢 8 次。

关注

评论

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

如何应对Android面试官->文件IO、手写APK加固框架核心实现(下)

老A说

Java’ an'droid

听GPT 讲Rust源代码--compiler(37)

fliter

Eagle文件图片管理工具 Eagle mac破解版 支持m1/m2

Rose

Eagle Eagle下载 图片管理软件

低代码开发会是前端程序员的下一个春天吗?

伤感汤姆布利柏

程序员 前端 低代码 程序员前端

Microsoft Remote Desktop Beta for Mac(微软远程连接工具)v10.9.6 (2182)激活版

影影绰绰一往直前

听GPT 讲Rust源代码--compiler(38)

fliter

RazorSQL for Mac(多功能SQL数据库编辑器)v10.5.3注册激活版

影影绰绰一往直前

苹果电脑专业测试跑分工具:Geekbench 6 mac破解版 支持m1/m2

Rose

系统跑分 Geekbench 6

4K YouTube to MP3 for Mac(在线视频转Mp3软件)v5.1.2中文激活版

影影绰绰一往直前

uDock for Mac(Dock栏快速启动程序)v4.1.1激活版

影影绰绰一往直前

听GPT 讲Rust源代码--compiler(35)

fliter

Fig Player for mac:自带音乐模式的媒体播放器 支持m1/m2

Rose

Mac软件 Fig Player破解下载 多媒体播放器 Fig Player Mac版

JetBrains pycharm pro 2023 for mac(Python编辑开发)v2023.3.3中文激活版

影影绰绰一往直前

EverWeb for Mac(网页设计软件)v4.1.0中文版

iMac小白

听GPT 讲Rust源代码--compiler(40)

fliter

movistpro在mac怎么破解?Movist Pro for mac中文直装破解版下载

Rose

mac视频播放器 Movist Pro 中文版 Movist Pro 破解

数字人实时互动速度史无前例!

青否数字人

数字人

每期10万奖金,寻找敢为人先的AI原生应用开发者

科技热闻

Cheetah3D for mac(3D渲染建模软件)v8.0激活版

影影绰绰一往直前

Fork for Mac(Git客户端)v2.39激活版

iMac小白

秒合约丨合约丨现货交易系统开发丨现成源码搭建

l8l259l3365

Notebooks for Mac(多功能记事本)v3.3.5激活版

影影绰绰一往直前

Vidmore Screen Recorder for Mac(屏幕录制软件) v1.1.26激活版

影影绰绰一往直前

互动数字人的使用步骤!

青否数字人

数字人

4K Video Downloader Plus Pro for Mac(4K视频下载器)v1.4.2激活版

影影绰绰一往直前

Tipard Screen Capture for mac(超好用的录屏软件)v1.1.26激活版

影影绰绰一往直前

听GPT 讲Rust源代码--compiler(39)

fliter

Luminar Neo下载破解——智能AI图像编辑处理工具

Rose

Luminar Neo 图像处理软件

Text Workflow for mac(文本格式转换工具)v1.8.4直装激活版

影影绰绰一往直前

青否交互式数字人正式上线,源码独立部署!

青否数字人

数字人

iA Writer for Mac(mac好用的写作软件)v7.0.6中文激活版

iMac小白

SGen:Mono的生代式垃圾收集器_.NET_Jonathan Allen_InfoQ精选文章