自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

谷歌開(kāi)源 TCMalloc,專為 C 和 C++ 定制的內(nèi)存分配器

新聞 前端
谷歌表示,其 TCMalloc 可以代替 C 和 C++ 默認(rèn)內(nèi)存分配器,提供更高的擴(kuò)展效率和更好的并行性支持。

  [[318169]]

谷歌表示,其 TCMalloc 可以代替 C 和 C++ 默認(rèn)內(nèi)存分配器,提供更高的擴(kuò)展效率和更好的并行性支持。

為了避免誤解,值得注意的是,這實(shí)際上是谷歌第二次開(kāi)源其內(nèi)存分配器。事實(shí)上,谷歌在 2005 年就已經(jīng)提供了其內(nèi)存分配器,當(dāng)時(shí)是作為谷歌性能工具的一部分連同其他工具一起推出的,其中包括內(nèi)存分析器、旨在確保堆一致性的堆檢查器以及基于 Perl 的 ppro 配置分析器和可視化工具。盡管有這么回事,但是,谷歌使用的內(nèi)部版本隨著時(shí)間的推移與外部版本出現(xiàn)了差異,因此,現(xiàn)在谷歌開(kāi)源了 TCMalloc 的當(dāng)前版本,其包括一些改進(jìn),如每個(gè) CPU 緩存、一定規(guī)模大小的刪除、快 / 慢路徑改進(jìn),等等。

該倉(cāng)庫(kù)是谷歌目前 TCMalloc 的實(shí)現(xiàn),我們?cè)谏a(chǎn)中的所有 C++ 程序都在使用它。該代碼僅限于內(nèi)存分配器實(shí)現(xiàn)本身。

 

如前所述,TCMalloc 包括 C*alloc 族和針對(duì) C++ 的::operator new 以及::operator delete 的實(shí)現(xiàn)。與 C 和 C++ 標(biāo)準(zhǔn)庫(kù)提供的相應(yīng)功能相比,它們提供了大量?jī)?yōu)化。例如,TCMalloc 利用固定大小的“頁(yè)”從操作系統(tǒng)執(zhí)行分配任務(wù),從而簡(jiǎn)化了簿記過(guò)程。此外,其中一些頁(yè)面專門用于特定大小的對(duì)象,如所有 16 字節(jié)的對(duì)象。在需要獲取或釋放內(nèi)存的時(shí)候,這還帶來(lái)了簡(jiǎn)化。最后,它還會(huì)緩存常用對(duì)象以提高操作速度。

TCMalloc 還通過(guò) MallocExtension 支持遙測(cè)擴(kuò)展,這對(duì)于收集堆探查結(jié)果和快照以調(diào)查內(nèi)存行為很有用。

有一些配置選項(xiàng)可用來(lái)調(diào)試 TCMalloc 性能。特別是,我們可以定義邏輯頁(yè)面大小,它們可以是 4KiB、8KiB、32KiB 或 256KiB。更大的頁(yè)面將減少?gòu)牟僮飨到y(tǒng)請(qǐng)求新頁(yè)面分配的可能性,從而以更大的內(nèi)存消耗為代價(jià)實(shí)現(xiàn)更快的操作。它還可以基于每個(gè)線程或每個(gè) CPU 來(lái)設(shè)置緩存大小,這是默認(rèn)設(shè)置。最后,我們可以調(diào)整內(nèi)存釋放的積極程度,這也會(huì)在幾個(gè)方面影響性能。

TCMalloc 架構(gòu)如下圖所示,在相關(guān)文檔中有詳細(xì)的描述:

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

https://github.com/google/tcmalloc/blob/master/docs/design.md

TCMalloc 只能使用谷歌內(nèi)部構(gòu)建系統(tǒng) Bazel 來(lái)構(gòu)建,對(duì)于一些使用其他構(gòu)建系統(tǒng)的開(kāi)發(fā)人員來(lái)說(shuō),這可能有點(diǎn)讓人感覺(jué)意外。但是對(duì) macOS、Ubuntu、Fedora 和 Windows 來(lái)說(shuō)都有二進(jìn)制格式的 Bazel 可用,因此,這應(yīng)該不會(huì)成為主要障礙。

責(zé)任編輯:張燕妮 來(lái)源: 架構(gòu)頭條
相關(guān)推薦

2017-02-08 08:40:21

C++固定內(nèi)存塊

2017-01-17 16:17:48

C++固定分配器

2017-01-20 14:21:35

內(nèi)存分配器存儲(chǔ)

2013-10-12 11:15:09

Linux運(yùn)維內(nèi)存管理

2024-10-11 10:00:20

2025-04-11 00:44:00

2024-12-11 08:18:11

2023-04-03 08:25:02

Linux內(nèi)存slub

2011-07-15 01:10:13

C++內(nèi)存分配

2009-12-25 15:34:54

slab分配器

2021-08-03 09:02:58

LinuxSlab算法

2020-12-15 08:54:06

Linux內(nèi)存碎片化

2023-12-22 07:55:38

Go語(yǔ)言分配策略

2010-02-04 14:58:06

C++內(nèi)存分配

2022-06-01 14:02:47

谷歌Chrome 安全團(tuán)C++

2013-10-14 10:41:41

分配器buddy syste

2021-12-16 06:52:33

C語(yǔ)言內(nèi)存分配

2025-02-10 07:30:00

malloc內(nèi)存分配器內(nèi)存

2022-01-13 10:30:21

C語(yǔ)言內(nèi)存動(dòng)態(tài)

2023-04-13 14:42:26

PoE供電器PoE交換機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)