百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
S

snmalloc

> 编程语言
开源

基于消息传递的分配器

1.9K stars0 点赞3 次浏览
访问官网GitHub

工具介绍

基于消息传递的分配器

snmalloc 是一个高性能分配器。snmalloc 可以作为只包含头文件的 C++ 库直接在项目中使用,可以在 Elf 平台(例如 Linux、BSD)上使用 LD_PRELOAD,并且有 crate 可用于从 Rust 中使用。其主要设计特点包括:

  • 由最初分配的同一线程释放的内存不需要任何同步操作。 * 由与最初分配的线程不同的线程释放的内存不需要任何锁定,而是使用一种新的消息传递方案将内存返回给最初的分配器,在那里它会被回收。 这使得可以通过仅使用一个原子操作执行数千次远程释放,从而实现与核心数量的大规模扩展。 * 分配器使用大范围的页面来减少所需的元数据量。 * 快速路径经过高度优化,在快速路径上仅包含两个分支(在使用 Clang 编译的 Linux 上)。 * 将平台依赖抽象化,以便支持在其他平台上移植。

snmalloc 的设计特别适合以下两种困难的情况,这些情况可能会对其他分配器造成问题:

自 最初的论文 以来, snmalloc 的实现已经发生了很大的变化。将内存返回给远程线程的机制保持不变,但大部分元数据布局都发生了变化。我们建议您阅读 安全文档,了解当前的设计,如果您想深入了解代码, 地址空间文档 可以为分配和释放路径提供一个很好的概述。

  • 分配相对位置的随机化, * 大多数元数据独立于分配存储,并使用保护页进行保护, * 所有带内元数据使用一种新的编码进行保护,可以检测损坏,以及 * 提供了 `

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C++allocatormallocmemory-allocator

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言