每个平板类至少有一个页面,当没有可用内存可以分配时,它将逐出"tails"列表中的项目。那么为什么会跑到MEMCACHED_MEMORY_ALLOCATION_FAILURE状态呢?
我认为这是一个libmemcached状态,而不是memcached状态。在任何情况下,当应用程序从底层分配器 (malloc) 请求内存并且 malloc 不返回堆内存时,都会发生这种情况。由于无法完成内存请求,因此您可能会收到这样的错误,因为应用程序将无法继续处理您的请求。
当客户端调用 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;
...
完全不可能发生