jemalloc

项目的线上服务器,在code中大量使用了std::map,发现就存在一个问题,这个map使用后,clear后内存并不能很好的释放,这个主要就是std malloc的问题。可以尝试使用jemalloc和tcmalloc这些三方的malloc库。在目前我项目中,jemalloc的表现最符合需求。

所以我们在apache module中使用jemalloc。这样map在clear的时候可以很好的释放内存,不会造成服务器的内存压力。

以下为apache module如何安装使用jemalloc的sample:

1.jemalloc的下载:

http://www.canonware.com/download/jemalloc/

使用最近版本的jemalloc:

http://www.canonware.com/download/jemalloc/jemalloc-3.5.0.tar.bz2

~$ wget http://www.canonware.com/download/jemalloc/jemalloc-3.5.0.tar.bz2

 

2.解压下载下来的tar包

~$ tar jxvf jemalloc-3.5.0.tar.bz2

 

3.安装jemalloc shell:

~$ ./configure --prefix=/usr/local

~$ make

~$ sudo make install

 

4.apache module使用jemalloc:

在apachectl脚本最前面中加入:

export LD_PRELOAD=/usr/local/lib/libjemalloc.so

jemalloc_第1张图片


5.检查apache module是否正常引用了jemalloc:

~$ sudo cat/proc/$httpd_pid/maps

jemalloc_第2张图片


你可能感兴趣的:(服务器,内存,malloc)