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

Redis内存管理的基石zmallc.c源码解读(一)Redis内存管理的基石zmallc.c源码解读(二)

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

全局变量

名称类型说明

used_memorystatic size_tRedis已用内存空间的大小

zmalloc_thread_safestatic int标识是否线程安全

used_memory_mutexpthread_mutex_t修改变量used_memory时的互斥锁

zmalloc_oom_handlerstatic 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系统则定义此宏

筑起梦想的鸟巢,开始人生的长跑,领先每回的冲刺,

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

相关文章:

你感兴趣的文章:

标签云: