前言

今天在安装redis的时候,第一次编译时未安装gcc导致编译失败。

安装完gcc后第二次编译时,报错如下:

jemalloc/jemalloc.h: No such file or directory。

 

解决

我原以为这个只需要重新安装gcc即可,结果并不行。后经博客园大佬自由早晚乱余生的博文启发,发现需要先清空编译文件再重新编译才可以。做法如下:

make distclean && make

 

原理

在redis的内存分配机制中,有三种分配方法,分别是:jemalloc, tcmalloc, libc.

三种方法分别是不同厂家提出的解决方案:

  • jemalloc是facebook推出的
  • tcmalloc是Google推出的
  • libc是标准的内存分配库malloc和free

由于redis并没有自己的内存池,没有在标准的系统内存分配器上再添加本身的东西,所以系统内存分配器的性能及碎片率会影响到redis的性能。

而这三种解决方案,redis的优先调用顺序是:tcmalloc > jemalloc > libc,因此三者的性能也是呈现这个序列的。

而jemalloc从redis2.4.4开始就被写入redis源码了。但是不知道为什么到了redis5.0.9又没办法直接使用了,可能是gcc的缺失导致中间文件不可用吧。。

 

后记

至于这三者的内存管理,就真的要写一大堆了。笔者需要先查查资料再写。

 

参考链接

  1. https://www.cnblogs.com/operationhome/p/10342258.html
  2. https://blog.csdn.net/libaineu2004/article/details/79400357
  3. https://www.cyningsun.com/07-07-2018/memory-allocator-contrasts.html
posted on   eryoung2  阅读(1129)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示