标签:
前面两篇博文,细致地介绍了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系统则定义此宏 |
Redis内存管理的基石zmallc.c源码解读(附录):源码结构表
标签:
原文地址:http://blog.csdn.net/guodongxiaren/article/details/44810325