Memory allocator combines private (per thread) sets of fixed-size free
blocks lists, a global, common for all threads, set of fixed-sized free
block lists, and a general-purpose external coalescing allocator. Blocks
of size bigger than the maximal fixed size are managed directly by the
external allocator. The lengths of fixed-size lists are changed
dynamically in accordance with the allocation and disallocation workload.
A service thread performs updates of all the lists and collects memory
associated with terminated user threads. A mutex-free serialization
method, utilizing thread suspension, is used in the process.
O allocator da memória combina (por a linha) jogos confidenciais das listas livres fixed-size dos blocos, um global, comuns para todo enfía, jogo de listas livres fixo-feitas sob medida do bloco, e um allocator coalescendo externo general-purpose. Os blocos do tamanho mais grandes do que o tamanho fixo máximo são controlados diretamente pelo allocator externo. Os comprimentos de listas fixed-size são mudados dinâmicamente de acordo com o workload do alocamento e do disallocation. Uma linha do serviço executa updates de todas as listas e coleta a memória associada com as linhas terminadas do usuário. Um método mutex-livre da serialização, utilizando a suspensão da linha, é usado no processo.