在windows下使用jemalloc庫

2021-06-18 20:00:59 字數 763 閱讀 7575

我們在用c、c++開發的時候,經常用到系統的malloc和free函式來分配和釋放記憶體,那有的人說,頻繁的申請和釋放,時間長了,會亂成記憶體洩露,也會影響伺服器的效能。請看以下**:

for (int i=0; i<5000000; i++)

這段**以release方式編譯,在配置記憶體6g、i5四核cpu的機子上執行,需要10秒左右的時間。

然後本人試了一下jemalloc庫,用je_malloc和je_free把以上**的函式替換掉,同樣的**,執行需要1秒鐘不到!至於有沒有記憶體洩露,是沒有條件去測試的啦,如有人測試出結果,請回帖分享一下。

500萬次,一次申請10kb記憶體,只要1秒鐘不到!如果沒有產生記憶體碎片,那是不是記憶體池什麼的,都可以放棄了?我們可以在需要記憶體的時候申請,用完後再釋放。

以下是jemalloc在windows下的使用方法:

1.我已經把**上傳了,請到這裡下截

2.解壓後,執行目錄下的build_dll.bat,完成編譯

3.把生成的dll和lib檔案拷到你的工程目錄下,通過以下方法把je_malloc,je_free函式匯出來,其它函式的匯出方法類似。

extern "c" __declspec(dllimport) void*    je_malloc(size_t size);

extern "c" __declspec(dllimport) void    je_free(void *ptr);

#pragma comment (lib, "jemalloc.lib")

編譯工具:vc9.0

在Windows下使用GCC

如何安裝 mingw gcc 編譯器套件 1 使用圖形化的自動安裝程式 2 使用命令列工具 mingw get 3 手動安裝 binutils mingw runtime dev and dll w32api mpc dev and dll mpfr dev and dll gmp dev and ...

在Windows 下使用OpenCL

目前,nvidia和 amd的windows driver均有支援opencl nvidia的正式版driver是從195.62版開始,而amd則是從9.11版開始 nvidia的正式版driver中包含 opencl.dll,因此可以直接使用。amd到目前為止,則仍需要安裝其sdk才有opencl...

在windows下使用ocilib

1.編譯客戶程式時,用法,詳見原始碼中readme文件。add ocilib include folder to your compiler includes path add ocilib lib folder to your linker library path for mingw only,...