[gclist] Fragmentation terminology

Nick Barnes nickb@harlequin.co.uk
Wed, 14 May 1997 16:27:30 +0100

Harlequin is adding a lot more terms to our memory management glossary
(http://www.harlequin.com/mm/reference/glossary/). In the process, a
terminology question has arisen which is not really GC-specific, but
this list has most of the memory management people on it, so I thought
I'd ask here.

Fragmentation is when an allocator cannot satisfy a request [without
going to the OS for more memory] despite there being sufficient unused
space. There are four possible causes:

1. requests have been rounded up.
2. used blocks are scattered.
3. adjacent free blocks have not been (or can not be) coalesced.
4. the allocator will not split a larger free block.

1 is internal fragmentation. 2 at least is external fragmentation. I
am after a way of distinguishing cases 2, 3, and 4. They could all be
viewed as special cases of external fragmentation, and called, say,
"scattered external fragmentation", "adjacent external fragmentation",
and, erm, something else.

Or "external fragmentation" could be used for 2 while 3 is called
"uncoalesced fragmentation" and 4 is called "unsplit fragmentation".

Or something else.


Nick Barnes