Redis内存分配简单分析
Redis内存管理1.Redis内存申请内存方式有三种:(1)系统自带的malloc/free方式进行申请/释放。(2)使用tcmalloc进行内存的申请/释放。(3)使用jemalloc进行内存申请/释放。/* Explicitly override malloc/free etc when using tcmalloc. */#if defined(USE_TCMALLOC)#define malloc(size) tc_malloc(size)#define calloc(count,size) tc_calloc(count,size)#define realloc(ptr,size) tc_realloc(ptr,size)#define free(ptr) tc_free(ptr)#elif defined(USE_JEMALLOC)#define malloc(size) je_malloc(size)#define calloc(count,size) je_calloc(count,size)#define realloc(ptr,size) je_realloc(ptr,size)#define free(ptr) je_free(ptr)#endif2.内存计数器上使用了gcc的一组原子操作,实现的功能就是在used_memory+n的操作//1.先做操作,再返回变化后的值 //2.先返回变化前的值,再做操作 #if defined(__ATOMIC_RELAXED) #define update_zmalloc_stat_add(__n) __atomic_add_fetch(&used_memory, (__n), __ATOMIC_RELAXED) //used_memory+=n; #define update_zmalloc_stat_sub(__n) __atomic_sub_fetch(&used_memory, (__n), __ATOMIC_RELAXED) //used_memory-=n; #elif defined(HAVE_ATOMIC) #define update_zmalloc_stat_add(__n) __sync_add_and_fetch(&used_memory, (__n)) //used_memory+=n; #define update_zmalloc_stat_sub(__n) __sync_sub_and_fetch(&used_memory, (__n)) //used_memory-=n; #else3.还有一部函数获取系统的配置信息
转载于:https://www.cnblogs.com/innobase/p/4639733.html
Redis内存分配简单分析相关推荐
- Redis内存空间简单分析
背景 最近发现项目中用的 redis 内存消耗很大(但是印象中却以为没有这么多的key的内存消耗才对呀?),使用 info 命令可以看到所有key占用的一些内存大小以及key的数量等等,如下图所示(只 ...
- 【 C 】动态内存分配案例分析
声明一个指向char类型的指针,可以在声明的时候就对其进行初始化,这样是合理的. 例如: E1: #include <stdio.h> #include <stdlib.h> ...
- 从内存分配角度分析c和java里的static 关键字.
即使作为Java的初学者, 对this 和 static 这两个关键字都不会陌生. 其实也不难理解: this 关键字: 指的是对象的本身(注意不是类本身) 跟.net 语言的Me 关键字类似. ...
- Win32下内存分配简单示例 - 使用CFree
Windows下内存分配示例:win7系统:CFree 5.0: 先用Win32的VirtualAlloc函数:再用标准C的malloc: 运行结果: #include <windows.h&g ...
- 3.内存分配、逃逸分析与栈上分配、直接内存和运行时常量池、基本类型的包装类和常量池、TLAB、可达性分析算法(学习笔记)
3.JVM内存分配 3.1.内存分配概述 3.2.内存分配–Eden区域 3.3.内存分配–大对象直接进老年代 3.3.1.背景 3.3.2.解析 3.4.内存分配–长期存活的对象进去老年代 3.5. ...
- 【 C 】经典抽象数据类型(ADT)之内存分配
C中的一些抽象数据类型(ADT)如链表.堆栈.队列和树等,链表已经在前几篇博文有所讨论,见: [ C ]在单链表中插入一个新节点的尝试(一) [ C ]在单链表中插入一个新节点的尝试(二) [ C ] ...
- 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- JVM详解(类加载,内存分配,GC,内存模型)
一. 背景 1. 前言 作为一位Java开发工作者,在关心业务代码开发的同时,我们也需要了解java底层时如何运作的,了解为什么说java是跨平台的语言,所以这一篇对JVM(java虚拟机)进行剖析和 ...
- 【JavaScript-进阶】详解数据类型,内存分配,API元素对象获取
目录 前言 1.数据类型 1.简单数据类型和复杂数据类型 2.堆和栈 2.webApi 1.API 2.DOM是啥? 3.如何获取元素? 1.根据ID获取 编辑 2.根据标签名获取 3.通过HTML ...
- FFmpeg源代码简单分析:内存的分配和释放(av_malloc()、av_free()等)
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
最新文章
- 用于类别级物体6D姿态和尺寸估计的标准化物体坐标空间
- Lua coroutine vs Java wait/notify
- android Handler的使用(一)
- R语言 plot()函数 基础用法
- C语言(第二章):数据类型、运算符、表达式
- C#中的DES加解密方法
- 雨过天晴电脑保护系统 试用手记
- 计算机硬盘容量减少修复,硬盘容量丢失的修复方法
- phpdesigner怎么写php,phpdesigner
- 要留住优秀员工,除了钱,你还可以用什么?
- 两台笔记本一台连接不上wifi
- 在VMware上搭建iPhone开发环境(转)
- 正则校验手机号,身份证,护照,社会统一信用代码,银行卡号码,传真
- Jira BigPicture结合KanBan跟踪项目执行实践分享
- 【行业云说直播间】-云数底座赋能基层治理现代化正式上线
- APP流量变现之穿山甲广告平台接入
- android oboe 混音_Android之AppBarLayout实现悬停吸附伸缩效果
- [Ec Final 2018] Misunderstood … Missing
- 计算机毕业设计springboot+vue基本微信小程序的小区防疫监管系统
- python画龙猫_Python:制作动态字符图
热门文章
- 区块链 xuperchain xuper-java-sdk 部署使用EVM 合约 教程
- Kubernetes 小白学习笔记(5)--Kubernetes集群的部署service、部署deployment、自动负载均衡、自动伸缩、版本升级、版本回退
- unable to remove repository reference (must force) - container is using its referenced image
- 解决button多次重复点击
- mysql 清除主从_mysql主从同步及清除信息
- C语言程序设计型考册作业1,C语言程序设计作业 求解答
- 微信小程序获取收货地址
- parse_str 相反函数
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_42、SpringBoot常用定时任务配置实战...
- CENTOS 使用 MUTT发送邮件