參考文章:
我們知道redis
並沒有自己實現記憶體池,沒有在標準的系統記憶體分配器上再加上自己的東西。所以系統記憶體分配器的效能及碎片率會對redis造成一些效能上的影響。
在redis的 zmalloc.c 原始碼中,我們可以看到如下**:
49 #if defined(use_tcmalloc)從上面的**中我們可以看到,redis在編譯時,會先判斷是否使用tcmalloc50 #define malloc(size) tc_malloc(size)
51 #define calloc(count,size) tc_calloc(count,size)
52 #define realloc(ptr,size) tc_realloc(ptr,size)
53 #define free(ptr) tc_free(ptr)
54 #elif defined(use_jemalloc)
55 #define malloc(size) je_malloc(size)
56 #define calloc(count,size) je_calloc(count,size)
57 #define realloc(ptr,size) je_realloc(ptr,size)
58 #define free(ptr) je_free(ptr)
59 #endif
,如果是,會用tcmalloc對應的函式替換掉標準的libc中的函式實現。其次會判斷jemalloc
是否使得,最後如果都沒有使用才會用標準的libc中的記憶體管理函式。
參考裡已經列出了安裝tcmalloc的安裝方法,下面我說下jemalloc的安裝方法
tar jxf jemalloc-3.6.0.tar.bz2
cd jemalloc-3.6.0
./configure
make use_jemalloc=yes force_libc_malloc=yes #指定用jemalloc
make
install
cp -a /root/jemalloc-3.6.0/include/jemalloc/*
/usr/include/
cd ..
cat /etc/ld.so.conf.d/local_lib.conf
echo "/usr/local/lib" > /etc/ld.so.conf.d/local_lib.conf
/sbin/ldconfig
#至於是選擇tcmalloc還是jemalloc,看個人喜好了
ptmalloc 是glibc的記憶體分配管理模組
tcmalloc 是google的記憶體分配管理模組
jemalloc 是bsd的記憶體分配管理模組
採用不同的方法建立字型
採用不同的方法建立字型 2007 12 15 10 08 例3.8 編寫乙個單文件的應用程式li3 8,採用不同的方法建立字型,並根據建立的字型輸出不同的文字。2 選擇專案工作區的classview,展開cli3 8view類,開啟成員函式ondraw 3 在函式ondraw 中新增如下 void ...
採用不同方式讀取資料流
一般我們用行輸入操作符 讀取資料流,如果是標量上下文,就返回一行,如果是列表上下文,就返回資料流中所有的資料。總體而言,一次讀取一行的方式在時間和記憶體的開銷上效率最高的。my contents do 可以選用file slurp 模組替代我們完成。use file slurp my text re...
採用不同的方法實現回文數的判斷
題目要求 採用集中你認為可行的方法實現回文數的判斷 輸入 123321 輸出 yes 輸入 122 輸出 no 法1 採用整數的方法,將乙個整數輸入,然後將整數反轉,判斷反轉後的整數是否和原來的書相等,但是這個方法沒有考慮到若該數很大超過了計算機的最大儲存範圍,那麼就會溢位啊。如下 include ...