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等函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM