每个slab类至少有一个页面,当没有可用的内存分配时,它将驱逐“tails”列表中的项目。那么为什么它会运行到 MEMCACHED_MEMORY_ALLOCATION_FAILURE 状态呢?
问问题
679 次
2 回答
0
我认为这是一个 libmemcached 状态,而不是一个 memcached 状态。在任何情况下,当应用程序从底层分配器(malloc)请求内存并且 malloc 不返回堆内存时,都会发生这种情况。由于无法完成内存请求,您可能会收到这样的错误,因为应用程序将无法继续处理您的请求。
于 2012-06-14T18:20:13.437 回答
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;
...
完全不可能发生
于 2016-04-21T08:38:55.477 回答