memcached在什么条件下会遇到分配失败

时间:2012-06-14 02:18:20

标签: memcached allocation

每个slab类至少有一个页面,当没有可用于分配的内存时,它将逐出“tails”列表中的项目。那么为什么它会遇到MEMCACHED_MEMORY_ALLOCATION_FAILURE状态?

2 个答案:

答案 0 :(得分:0)

我认为这是一个libmemcached状态,而不是memcached状态。在任何情况下,当应用程序从底层分配器(malloc)请求内存并且malloc不返回堆内存时,它将发生。由于无法完成内存请求,您可能会收到类似的错误,因为应用程序无法继续处理您的请求。

答案 1 :(得分:0)

当客户端调用libmemcached.libmemcached抛出异常包括几种情况时会发生此错误:

1 realloc,malloc,calloc

2见源代码段如下:

...
new_size= sizeof(char) * (size_t)((adjust * MEMCACHED_BLOCK_SIZE) + string->current_size);
if (new_size < need)
  return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
...

完全不可能发生