Free memory can be managed by creating a free list having entries with address
of free memory location. A portion of this free list can then be cached in a cache
that includes an upper threshold and a lower threshold. Additionally, a plurality
of free lists are created for a plurality of memory banks in a plurality of memory
channels. A free list is created for each memory bank in each memory channel. Entries
from these free lists are written to a global cache. The entries written to the
global cache are distributed between the memory channels and memory banks.