Redis内存管理的基石zmallc.c源码解读(附录):源码结构表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guodongxiaren/article/details/44810325

        前面两篇博文,细致地介绍了zmalloc.c文件的各个函数,不过大家要想深入学习Redis,还需要自己去看源码才是,我梳理了一下zmalloc.c文件的结构,为大家阅读源码提供便利。

全局变量

名称 类型 说明
used_memory static size_t Redis已用内存空间的大小
zmalloc_thread_safe static int 标识是否线程安全
used_memory_mutex pthread_mutex_t 修改变量used_memory时的互斥锁
zmalloc_oom_handler static void (*)(size_t) 函数指针指向内存不足时调用的函数

函数

主要函数

名称 说明
zmalloc 分配内存空间
zfree 释放zmalloc分配的空间
zcalloc 分配内存空间并初始化为0
zrealloc 重新分配空间的大小
zstrdup 字符串复制
zlibc_free 同free()

其他函数

名称 说明
zmalloc_enable_thread_safeness 设置线程安全标识(zmalloc_thread_safe置1)
zmalloc_get_fragmentation_ratio 内存使用率:RSS/used_memory
zmalloc_get_memory_size 返回系统物理内存的大小(单位:字节)
zmalloc_get_private_dirty 查询/proc/self/smaps中"Private Dirty"的大小
zmalloc_get_rss 通过查询/proc/<pid>/stat文件获得RSS的值
zmalloc_get_smap_bytes_by_field 查询/proc/self/smaps的指定字段的大小
zmalloc_set_oom_handler 设置oom(内存不足)函数指针的值
zmalloc_size 查询系统实际分配的内存空间的大小
zmalloc_used_memory 查询已用空间(used_memory)的大小

zmalloc_get_memory_size()该函数在最新的Redis发布版中还未被包含。仅在目前(2015/04)的github开发版中。

宏函数

名称 说明
update_zamlloc_stat_alloc 分配内存空间后更新used_memory的值
update_zamlloc_stat_free 释放内存空间后更新used_memory的值
update_zamlloc_stat_add 线程安全地used_memory增加操作
update_zamlloc_stat_sub 线程安全地used_memory减少操作

名称 说明
PREFIX_SIZE 内存分配时比需求多分配的空间大小
HAVE_MALLOC_SIZE 若使用tcmalloc、jemalloc或Mac系统则定义此宏

猜你喜欢

转载自blog.csdn.net/guodongxiaren/article/details/44810325