---
title: 使用jemalloc优化内存分配
description: "jemalloc是一款内存分配器，与其它内存分配器（glibc）相比，其最大优势在于多线程场景下内存分配性能高以及内存碎片减少。充分发挥鲲鹏芯片多核多并发优势，推荐业务应用代码使用jemalloc进行内存分配。"
url: https://www.hikunpeng.com/document/detail/zh/perftuning/tuningtip/kunpengtuning_12_0051.html
sourcePath: /source/zh/perftuning/tuningtip/kunpengtuning_12_0051.html
indexId: a72cecdd09a0e6b2fd6e30a72f3e4adfac511ba1180d2bc3e0f974dedcea864658
---
# 使用jemalloc优化内存分配

#### 原理

jemalloc是一款内存分配器，与其它内存分配器（glibc）相比，其最大优势在于多线程场景下内存分配性能高以及内存碎片减少。充分发挥鲲鹏芯片多核多并发优势，推荐业务应用代码使用jemalloc进行内存分配。

在内存分配过程中，锁会造成线程等待，对性能影响巨大。jemalloc采用如下措施避免线程竞争锁的发生：使用线程变量，每个线程有自己的内存管理器，分配在这个线程内完成，就不需要和其它线程竞争锁。


#### 修改方式

1. 下载jemalloc，参考INSTALL.md编译安装。
  源码下载地址https://github.com/jemalloc/jemalloc(https://github.com/jemalloc/jemalloc)

2. 修改应用软件的链接库的方式，在编译选项中添加如下选项：

```
-I`jemalloc-config --includedir` -L`jemalloc-config --libdir` -Wl,-rpath,`jemalloc-config --libdir` -ljemalloc `jemalloc-config --libs`
```


  具体参考https://github.com/jemalloc/jemalloc/wiki/Getting-Started(https://github.com/jemalloc/jemalloc/wiki/Getting-Started)

3. 部分开源软件可以修改配置参数来指定内存分配库，如MySQL可以在my.cnf文件中配置：malloc-lib=/usr/local/lib/libjemalloc.so
