什么是jemalloc:
jemalloc是一个malloc()碎片避免和可扩展的并发支持的实现。主要体现在避免内存碎片的产生和并发扩展上。
jemalloc是如何避免内存碎片产生的:
jemalloc首次分配小/大对象时,应用程序线程以循环方式分配给arenas。arenas完全相互独立。他们维护自己的块,从中为小/大对象雕刻页面运行。无论哪个线程执行释放,释放的内存总是返回到它所来自的arenas。
相关概念:
arena chunk:
虚拟内存被逻辑上分割成chunks
arenas:
malloc是统一来管理内存,就像一个池塘,所有内存就是一个池塘。而jemalloc是把这个池塘划分为几个小块,为每个进程分配一个块,各个块之间相互独立,这个块就称之为arenas。
Thread cache:
各个线程每一个都分配到一个arenas,使之完全相互独立,互不干扰。
MySQL如何使用jemalloc:
一、jemalloc的安装:
1、下载:wget https://github.com/jemalloc/jemalloc/releases/download/5.2.0/jemalloc-5.2.0.tar.bz2
2、解压:tar -jxf jemalloc-5.2.0.tar.bz2
cd jemalloc-5.2.0
3、编译:./configure --prefix=/usr/local/jemalloc --libdir=/usr/lib
4、安装:make && make install
5、加入:echo /usr/lib >> /etc/ld.so.conf
6、调用:ldconfig
二、MySQL调用:
1、在my.cnf配置文件中加入:
vim my.cnf:
[mysqld_safe]
malloc-lib=/usr/lib/libjemalloc.so
三、查看是否已启用jemalloc
lsof -n|grep libjemalloc.so




