关于tcmalloc的学习

这也是一篇关于tokyocabinet(以下简称tc)的文章。

对于tc这个东西,还是比较好用的,但是其默认的内存分配(系统的内存分配)是在令我不能满意。我的一个业务已把tc当做内存存储来使用的,所有的东西都不落地,于是我使用内存就得珍惜一点。 或者说我不是我太吝啬,那个内存分配也太浪费了。本来也就1.2G的数据,在tc中折腾几天之后,使用物理内存却需要4.1G,有点儿太离谱了。所以,今天尝试一下其它的内存分配器。

tcmalloc(Thread-Caching Malloc),不要和上面的tc混淆, 是一个内存分配的一个动态库。参考:
http://code.google.com/p/google-perftools/

在64位机器上,需要先安装libunwind:
http://mirror.csclub.uwaterloo.ca/nongnu/libunwind/

启用tcmalloc的两种方式:
方式一:
不需要重新编译程序, 使用LD_PRELOAD=/PATH/TO/libtcmalloc.so ; 重新启动程序就行(但是你要么把启动程序包装一下,要么每次启动程序前都记着先执行一下这个操作)

方式二:
重新编译程序,编译时,使用选项:
-ltcmalloc
这样,启动的是否就一定是这种内存分配方式了,但是,你也不可能再使用默认的分配方式了

参考资料:
http://www.tektalk.org/2011/10/20/tcmalloc%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E6%80%BB%E6%8B%AC/
http://blog.csdn.net/yfkiss/article/details/6902269
http://goog-perftools.sourceforge.net/doc/tcmalloc.html

———————————————–
我的测试程序已经跑了一个小时了,似乎tcmalloc表现的要好一些,不过不是太明显。明天再观察一下

 

安装方法:

 

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据