Redis 自身对内存的分配和释放做了一定封装
通过 void zmalloc_enable_thread_safeness(void); 函数将 zmalloc_thread_safe 变量置为 1 即开启
zmalloc_thread_safe 标志位来决定是否在更新 used_memory 变量时加锁。整个内存分配的统计是通过宏定义去实现的
类似这样
#define increment_used_memory(__n) do { size_t _n = (__n); if (_n&(sizeof(long)-1)) _n += sizeof(long)-(_n&(sizeof(long)-1)); if (zmalloc_thread_safe) { pthread_mutex_lock(&used_memory_mutex); used_memory += _n; pthread_mutex_unlock(&used_memory_mutex); } else { used_memory += _n; }
} while(0)
static void zmalloc_oom(size_t size) {fprintf(stderr, "zmalloc: Out of memory trying to allocate %zu bytesn",size);fflush(stderr);abort();
}
exit()
abort()
assert()
本文发布于:2024-02-13 21:10:42,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1715731532254760.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |