Linux—更换内存分配器

概述

主要的内存分配接口是“malloc”。当进程使用malloc请求一个非常大的本地内存块的时候,底层会使用mmap系统调用来查询可寻址的内存空间。然后,它根据自己的分配算法管理这些内存块,这个算法可能会导致内存碎片。

改变默认的malloc分配器可以解决可能的本地内存碎片问题(本地内存泄漏)。可替代方案有:jemalloc、tcmalloc及mimalloc。

经过对除了mimalloc之外的几种顶级的分配算法进行广泛的基准测试,发现mimalloc总是优于其他的几种分配器,包括jemalloc、tcmalloc、Hoard等等,并且通常使用的内存数会更少(最多可以降低25%的内存消耗)。

使用mimalloc分配器

1、下载或使用git下载源码

https://github.com/microsoft/mimalloc

由于使用git需要科学上网,本人使用的是zip版本源码

2、编译

unzip mimalloc-master.zip 
cd mimalloc-master/
mkdir -p out/release
cd out/release/
cmake ../../
make

3、设置环境变量

cp out/release/libmimalloc.so.2.0 /usr/lib/libmimalloc.so
vi /etc/profile
      export LD_PRELOAD=/usr/lib/libmimalloc.so

source /etc/profile 
或
. /etc/profile

使用如下命令查看分配器是否设置成功:

ldd /usr/bin/pigz

如果输出如下图所示,则表示分配器已经设计成功:

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注