2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

谷歌开源 TCMalloc,专为 C 和 C++ 定制的内存分配器

  • 2020-03-10
  • 本文字数:902 字

    阅读完需:约 3 分钟

谷歌开源TCMalloc,专为C和C++定制的内存分配器

谷歌表示,其TCMalloc可以代替 C 和 C++默认内存分配器,提供更高的扩展效率和更好的并行性支持


为了避免误解,值得注意的是,这实际上是谷歌第二次开源其内存分配器。事实上,谷歌在 2005 年就已经提供了其内存分配器,当时是作为谷歌性能工具的一部分连同其他工具一起推出的,其中包括内存分析器、旨在确保堆一致性的堆检查器以及基于 Perl 的 ppro 配置分析器和可视化工具。尽管有这么回事,但是,谷歌使用的内部版本随着时间的推移与外部版本出现了差异,因此,现在谷歌开源了 TCMalloc 的当前版本,其包括一些改进,如每个 CPU 缓存、一定规模大小的删除、快/慢路径改进,等等。


该仓库是谷歌目前 TCMalloc 的实现,我们在生产中的所有 C++程序都在使用它。该代码仅限于内存分配器实现本身。


如前所述,TCMalloc 包括C*alloc族和针对C++::operator new以及::operator delete的实现。与 C 和 C++标准库提供的相应功能相比,它们提供了大量优化。例如,TCMalloc 利用固定大小的“页”从操作系统执行分配任务,从而简化了簿记过程。此外,其中一些页面专门用于特定大小的对象,如所有 16 字节的对象。在需要获取或释放内存的时候,这还带来了简化。最后,它还会缓存常用对象以提高操作速度。


TCMalloc 还通过 MallocExtension 支持遥测扩展,这对于收集堆探查结果和快照以调查内存行为很有用。


有一些配置选项可用来调试TCMalloc性能。特别是,我们可以定义逻辑页面大小,它们可以是 4KiB、8KiB、32KiB 或 256KiB。更大的页面将减少从操作系统请求新页面分配的可能性,从而以更大的内存消耗为代价实现更快的操作。它还可以基于每个线程或每个 CPU 来设置缓存大小,这是默认设置。最后,我们可以调整内存释放的积极程度,这也会在几个方面影响性能。


TCMalloc 架构如下图所示,在相关文档中有详细的描述:



TCMalloc 只能使用谷歌内部构建系统Bazel来构建,对于一些使用其他构建系统的开发人员来说,这可能有点让人感觉意外。但是对 macOS、Ubuntu、Fedora 和 Windows 来说都有二进制格式的 Bazel 可用,因此,这应该不会成为主要障碍。


原文链接:


TCMalloc, Google’s Customized Memory Allocator for C and C++, Now Open Source


2020-03-10 08:053995

评论

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

KubeEdge边缘设备管理系列(五):Mapper-Framework设备数据写入

华为云原生团队

云计算 容器 云原生

电力生产和供应业需要堡垒机的情形简单聊聊

行云管家

网络安全 信息安全 数据安全 等保 堡垒机

共探 AI 硬件未来图景,火山引擎“智变浪潮”技术沙龙圆满落幕

火山引擎边缘云

AIOT AI 大底座 AI 数据基础设施

Cursor 在前端需求开发工作流中的应用|得物技术

得物技术

前端 AI‘’ cursor

户外全彩LED屏幕可以做成什么样的造型?

Dylan

广告 LED LED display LED显示屏 LED屏幕

升级数智底座:企业AI规模化应用的“中国解法”

用友BIP

科技 用友BIP 数智底座 国产大模型 企业AI

实习期间如何提升留用概率?

王中阳Go

Go 实习 厚度按

第一期开讲!北京国家会计学院“数智财务高端人才”培养项目

用友智能财务

财经 会计

Kube Scheduler 可观测性最佳实践

观测云

Kubernetes

新版 Midjourney V7 支持语音生图;语音 AI 平台 Phonic 融资 400 万美元,构建自主端到端模型丨日报

声网

《Operating System Concepts》阅读笔记:p586-p586

codists

操作系统

高质发展,匠心智造!狄耐克荣获“2025年度中国精工品牌”荣誉称号

新消费日报

无需登录+离线调试,Apipost比Apifox更值得拥有

数据追梦人

一篇论文,看见百度广告推荐系统在大模型时代的革新

百度Geek说

百度

shopee商品详情API接口(shopee API系列)

tbapi

Shopee shopee商品数据采集 shopee商品数据分析 shopee接口

征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动

KaiwuDB

征文大赛 征文活动 征文投稿 数据库、 KaiwuDB 分布式多模数据库

三级等保测评的企业需要做什么准备?

黑龙江陆陆信息测评部

践行低碳行动!北京地铁签约用友

用友BIP

数智化 用友BIP 智能财务 北京地铁

什么是BTC铭文?什么是MSKE马斯克铭文?

MSKE铭文

区块链 数字货币 MSKE铭文 马斯克铭文 比特币铭文

国产替代势不可挡:大型企业ERP国产替代的挑战与机遇

用友BIP

ERP 国产替代 用友BIP 数智底座

如何在线绘制roadmap路线图?5个简单易用的路线图软件盘点!

职场工具箱

在线白板 办公软件 AIGC 路线图 技术路线图

如何在API中实现搜索和过滤功能

数据追梦人

腾讯云服务器怎么对接高防

网络安全服务

CDN DDoS 腾讯云服务器 高防IP DDoS 攻击

什么是鱼骨图,怎么用AI制作鱼骨图?4个鱼骨图生成工具盘点!

职场工具箱

人工智能 效率工具 AI软件 AIGC 鱼骨图

飞机电气系统技术分析:数字样机技术引领创新

DevOps和数字孪生

去中心化云算力(PowerVerse)是如何提供算力服务的?

PowerVerse

智能合约 去中心化 算力 #区块链 AI‘’

【等保小知识】等保3.0出了吗?啥时候发布的?

行云管家

网络安全 等保 等保测评

时序数据库 TDengine + Tableau,数据可视化一步到位!

TDengine

数据库 tdengine 时序数据库

过剩与稀缺:现代社会的思考与启示

TechLead Studio

个人成长

初识华为RazorAttention

zjun

爬虫 API 科普:一文搞懂网络数据抓取的门道

代码忍者

API 接口

谷歌开源TCMalloc,专为C和C++定制的内存分配器_编程语言_Sergio De Simone_InfoQ精选文章