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

来源:互联网 发布:hive从本地导入数据 编辑:程序博客网 时间:2024/06/11 12:03
  • 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分配内存空间并初始化为0zrealloc重新分配空间的大小zstrdup字符串复制zlibc_free同free()

其他函数

名称说明zmalloc_enable_thread_safeness设置线程安全标识(zmalloc_thread_safe置1)zmalloc_get_fragmentation_ratio内存使用率:RSS/used_memoryzmalloc_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系统则定义此宏
1 0
原创粉丝点击