Suppose memory contains 2 free blocks of size 20 and 15. The very small ones can't be used very easily. Keep a large array of bits, one for each chunk. If bit is 0 it means chunk is in use, if bit is 1 it means chunk is free. Will be discussed more when talking about file systems.
Allocation is fast, no fragmentation.
It's easy when a chunk is only used in one place. When this goes to zero, free the memory. Smalltalk, file descriptors in Unix. Works fine for hierarchical structures. If structures are circular then this is the only way to reclaim space.