一、安装包下载
1.1从github上下载jemalloc程序,有两种方式,一种是下载gz文件,另一种是下载工程或clone工程文件。使用方法二下载或clone时没有configure、make等文件,不知道为什么,没深入研究。所以使用第一种方法直接下载gz压缩包,建议在linux环境下载。
下载路径如下:
https://github.com/jemalloc/jemalloc/releases
1.2 解压到自定义目录
二、编译调试
2.1 配置安装根目录,编译工程
./configure –prefix=/usr/local/jemalloc
make
make install
2.2 编译好后,在/usr/local/jemalloc会生成bin、libs等文件
3. 测试环境
3.1 进入工程环境,创建测试文件夹(neq)和测试文件(app.c)
#include
#include
void do_something(size_t i) {
// Leak some memory.
malloc(i * 100);
}
int main(int argc, char **argv) {
for (size_t i = 0; i < 1000; i++) {
do_something(i);
}
// Dump allocator statistics to stderr.
malloc_stats_print(NULL, NULL, NULL);
return 0;
}
3.2 编译app.c文件
编译时,会出现找不到jmalloc.h头文件错误,使用-I指定h文件目录,使用-L指定库文件目录,使用-l指定库文件名称,具体参数可以看到gcc说明。
使用如下命令编译:gcc app.c –o app –I’/usr/local/jemalloc/include’ –L’/usr/local/jemalloc/lib’ -ljemalloc
3.3 由于libjemalloc.so.2没有加入系统,所以在执行时提示libjemalloc.so.2无法打开或找不到错误。
error while loading shared libraries: libjemalloc.so.2: cannot open shared object file: No such file or directory解决办法是把libjemalloc.so.2加入/etc/ld.so.conf中,操作如下:
include ld.so.conf.d/*.conf
# ls /etc/ld.so.conf.d
kernel-3.10.0-327.4.4.el7.x86_64.conf
dyninst-x86_64.conf
libiscsi-x86_64.conf
kernel-3.10.0-229.20.1.el7.x86_64.conf
/usr/local/jemalloc/lib/
保存退出。
4) 执行如下命令让文件生效:
sudo /sbin/ldconfig
再次启动Terminal。
4. 运行app程序,显示内存内容,jemalloc测试成功。
参考文档:
https://github.com/jemalloc/jemalloc/wiki/Getting-Started
https://github.com/jemalloc/jemalloc/blob/dev/INSTALL.md
https://blog.csdn.net/xiaofei_hah0000/article/details/52214592
https://blog.csdn.net/a193314/article/details/54345799
https://blog.csdn.net/iw1210/article/details/53515259
https://blog.csdn.net/jiaweizou/article/details/8153897
https://blog.csdn.net/rznice/article/details/50857220