日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

开源库jemalloc简介

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开源库jemalloc简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jemalloc是通用的malloc(3)實現,它強調避免碎片和可擴展的并發支持。它的源碼位于https://github.com/jemalloc/jemalloc,最新穩定版本為5.2.1。

glibc的內存分配算法是基于dlmalloc實現的ptmalloc;tcmalloc是Google開發的內存分配器;jemalloc在Facebook公司內部很多項目中使用。

有時在Linux上使用glibc頻繁調用malloc/free時會導致偽”內存泄漏”,此時可試試jemalloc,參考:https://zhuanlan.zhihu.com/p/270913476

windows上使用vs2017編譯x64 jemalloc源碼操作步驟:直接打開源碼下的jemalloc_vc2017.sln編譯,會報找不到jemalloc_preamble.h文件

(1).從http://www.cygwin.com/ 下載setup-x86_64.exe并安裝,若下載慢,使用國內的鏡像地址,如阿里云鏡像http://mirrors.aliyun.com/cygwin/,安裝包至少包括autoconf、autogen、gawk、grep、sed;

(2).將C:\cygwin64\bin加入系統環境變量;

(3).打開”適用于VS 2017的x64本機工具命令提示”(注意:編譯x86和x64選擇不同,編譯x86,打開”x86 Native Tools Command Prompt for VS 2017”),并將其定位到jemalloc-5.2.1目錄下,執行:$ sh -c "CC=cl ./autogen.sh";

(4).打開jemalloc_vc2017.sln編譯即可生成jemalloc動態庫和靜態庫。

Linux上編譯jemalloc源碼操作步驟,依次執行如下命令即可:

./configure --with-jemalloc-prefix=je_
make

以下是測試代碼:

#include "funset.hpp"
#include <iostream>
#include <jemalloc/jemalloc.h>// define to jemalloc
#define malloc(size) je_malloc(size)
#define calloc(nmemb, size) je_calloc(nmemb, size)
#define realloc(ptr, size) je_realloc(ptr, size)
#define free(ptr) je_free(ptr)int test_jemalloc()
{char* a = static_cast<char*>(malloc(10));if (!a) {fprintf(stderr, "fail to malloc\n");return -1;}free(a);return 0;
}

在windows下,debug模式,設置斷點,可直接跟進源碼中,如下圖所示,Linux下,可通過gdb跟進:

GitHub:https://github.com/fengbingchun/Messy_Test

總結

以上是生活随笔為你收集整理的开源库jemalloc简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。