Methods and apparatus for the efficient allocation of shared memory in a
multi-threaded computer system are disclosed. In accordance with one
embodiment of the present invention, a computer-implemented method for
allocating memory shared by multiple threads in a multi-threaded computing
system includes partitioning the shared memory into a plurality of blocks,
and grouping the multiple threads into at least a first group and a second
group. A selected block is allocated to a selected thread which may
attempt to allocate an object in the selected block. The allocation of the
selected block to the selected thread is based at least partially upon
whether the selected thread is a part of the first group or the second
group. In one embodiment, grouping the multiple threads into the first
group and the second group includes identifying a particular thread and
determining whether the particular thread is a fast allocating thread. In
such an embodiment, when the particular thread is fast allocating, the
particular thread is grouped into the first group.
Os métodos e os instrumentos para o alocamento eficiente da memória compartilhada em um sistema computatorizado multi-enfiado são divulgados. De acordo com uma incorporação da invenção atual, um método computador-executado para alocar a memória compartilhada por linhas múltiplas em um sistema computando multi-enfiado inclui dividir a memória compartilhada em um plurality dos blocos, e agrupar o múltiplo enfía ao menos em um primeiro grupo e em um segundo grupo. Um bloco selecionado é alocado a uma linha selecionada que possa tentar alocar um objeto no bloco selecionado. O alocamento do bloco selecionado à linha selecionada é baseado ao menos parcialmente upon se a linha selecionada é uma parte do primeiro grupo ou do segundo grupo. Em uma incorporação, agrupar as linhas múltiplas no primeiro grupo e no segundo grupo inclui identificar uma linha particular e determinar se a linha particular é uma linha de alocamento rápida. Em tal incorporação, quando a linha particular é alocamento rápido, a linha particular é agrupada no primeiro grupo.