每个slab类至少有一个页面,当没有可用于分配的内存时,它将逐出“tails”列表中的项目。那么为什么它会遇到MEMCACHED_MEMORY_ALLOCATION_FAILURE状态?
答案 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;
...
完全不可能发生