jemalloc使用方法
1、编译
在网站https://github.com/jemalloc/jemalloc/releases下载最新版的jemalloc源码包。
- 解压
wget https://github.com/jemalloc/jemalloc/releases/download/5.2.0/jemalloc-5.2.0.tar.bz2 tar xjvf jemalloc-5.2.0.tar.bz2 cd jemalloc-5.2.0/
- 配置
./configure --with-jemalloc-prefix=je_
如果是从github拉取源码,也可以通过配置
sh autogen.sh --with-jemalloc-prefix=je_
注意:这一步确定要把jemalloc的函数编译成哪种形式,比如下面的配置就会把分配内存的函数编译成je_malloc的形式,把calloc编译成je_calloc等等。这样就不会和系统的libc的分配函数malloc冲突,因为若不指定该选项默认编译的分配函数是malloc。
- 编译 make
- 编译完成后在lib目录下回生成以下的几个库文件:
$ ls ./lib libjemalloc.a libjemalloc_pic.a libjemalloc.so libjemalloc.so.2
其中libjemalloc.a是静态库,
libjemalloc.so.2是动态库,这里我使用的是静态库。
2、使用
把在jemalloc库源码目录include下的jemalloc.h,jemalloc_defs.h和libjemalloc.a分别复制到include和lib目录下,并创建一下测试函数。
在使用处#include "jemalloc.h"
编译时添加:
-ljemalloc -DJEMALLOC_NO_DEMANGLE
这里-DJEMALLOC_NO_DEMANGLE用来标明使用je_前缀的函数,解释如下:
/* * The je_* macros can be used as stable alternative names for the * public jemalloc API if JEMALLOC_NO_DEMANGLE is defined. This is primarily * meant for use in jemalloc itself, but it can be used by application code to * provide isolation from the name mangling specified via --with-mangling * and/or --with-jemalloc-prefix. */
这样就可以在代码中直接使用je_malloc je_free等函数
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=