在什么情况下,内存缓存会遇到分配失败



每个平板类至少有一个页面,当没有可用内存可以分配时,它将逐出"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;
...

完全不可能发生

相关内容

最新更新