A method and system for allocating memory. The computer system on which the
memory allocation system executes may support the simultaneous execution
of multiple threads. Under control of a thread, the memory allocation
system first identifies a bin associated with blocks ("lockers") of memory
large enough to satisfy a memory allocation request. When the identified
bin has a free locker, the memory allocation system searches a circular
list of headers associated with the identified bin for a collection of
lockers ("warehouse") that contains a locker that is available to be
allocated. The memory allocation system allocates the found available
locker to satisfy the request. If, however, the allocated bin has no free
lockers, the memory allocation system allocates a warehouse with lockers
large enough to satisfy the memory allocation request. The memory
allocation system then adds a warehouse header for the allocated warehouse
to a circular list of warehouse headers associated with the identified
bin. The memory allocation system allocates a locker from the newly
allocated warehouse to satisfy the memory allocation request.
Un método y un sistema para asignar memoria. El sistema informático en el cual el sistema de la asignación de memoria se ejecuta puede apoyar la ejecución simultánea de hilos de rosca múltiples. Bajo control de un hilo de rosca, el sistema de la asignación de memoria primero identifica un compartimiento asociado a los bloques ("armarios") de la memoria bastante grandes para satisfacer una petición de la asignación de memoria. Cuando el compartimiento identificado tiene un armario libre, el sistema de la asignación de memoria busca una lista circular de los jefes asociados al compartimiento identificado para una colección de los armarios ("almacén") que contenga un armario que esté disponible para ser asignado. El sistema de la asignación de memoria asigna el armario disponible encontrado para satisfacer la petición. Si, sin embargo, el compartimiento asignado no tiene ningún armario libre, el sistema de la asignación de memoria asigna un almacén con los armarios bastante grandes para satisfacer la petición de la asignación de memoria. El sistema de la asignación de memoria entonces agrega un jefe del almacén para el almacén asignado a una lista circular de los jefes del almacén asociados al compartimiento identificado. El sistema de la asignación de memoria asigna un armario del almacén nuevamente asignado para satisfacer la petición de la asignación de memoria.