A method for managing computer memory includes maintaining multiple sets of
free blocks of memory wherein a free block is added to a set based on its
size. In response to a request for a block of a request size, a set of
blocks is searched for a free block which is at least as large as the
request size but smaller than the request size plus a threshold. If such a
block is found, the block is allocated in its entirety. If such a free
block is not found, a block at least as large as the request size maybe
split and the request satisfied with the resulting split block. Methods
for managing a block of contiguous persistent memory or storage and for
coalescing adjacent free blocks using header information are also
described.
Un método para manejar memoria de computadora incluye los sistemas múltiples que mantienen de bloques libres de la memoria en donde un bloque libre se agrega a un sistema basado en su tamaño. En respuesta a un pedido un bloque de un tamaño de la petición, un sistema de bloques se busca para un bloque libre que sea por lo menos tan grande como el el tamaño de la petición pero más pequeño que el tamaño de la petición más un umbral. Si se encuentra tal bloque, el bloque se asigna en su totalidad. Si un bloque tan libre no se encuentra, un bloque por lo menos tan grande como el tamaño de la petición partió quizá y la petición satisfecha con el bloque partido que resulta. Los métodos para manejar un bloque de la memoria o del almacenaje persistente contigua y para los bloques libres adyacentes que se unen que usan la información de jefe también se describen.