欢迎来到 常识词典网 , 一个专业的常识知识学习网站!
[ Ctrl + D 键 ]收藏本站
答案 1:
这种情况是有可能出现的,频繁的释放内存,对于数据库产品的设计不利,你只需要确保这些内存仍然可用.这是更高效的办法.符合生产的使用,也是目前redis采用的.答案 2:
这不是Redis本身的问题,Redis本身确实已经调用free释放这些内存。这应该是使用的底层C运行时的问题。就glibc来说,在分配大于128k的内存时使用m-p,而使用brk/-rk在-eap中分配小内存。通过m-p申请的内存在调用free后能马上返还给系统,而-eap中的内存就不一定,除非释放的内存是-eap中连续的大块。Redis本身没有内存管理机制,只有一个使用量的统计功能 。每次需要创建对象,都是直接调用-lloc申请,而Redis中的对象基本都比较小,所以基本都是在-eap中的内存。可以试试goog-perftools.sourceforge.net/doc/tc-ll... 这个内存分配实现。答案 3:
是你自己使用方式有问题吧.如果是使用的del命令.是会释放内存的.db.c//....187 void delCom-nd(redisClient *c)//....191 if (dbDelete(c- > db,c- > argv[j])) {//....131 int dbDelete(redisDb *db, robj *key) {//...140 return dictDelete(db- > dict,key- > ptr) == DICT_OK;下一篇:迄今为止,你觉得最令你震惊的是什么事? 下一篇 【方向键 ( → )下一篇】
上一篇:上海中高级软件工程师一般的薪资多少? 上一篇 【方向键 ( ← )上一篇】
快搜