>Well there are several applicable algorithms, but we don't need to get>into that to argue this point. Just consider an application which can>successfully use fixed-length blocks. In this case it is trivial to>write a dynamuc storage allocator with constant time allocation and>deallocation, and no fragmentation effects. Note that fixed sized>blocks do not significantly help GC, but they certainly help>allocators with explicit deallocation.

>I have seen a number of real time systems written in this kind of>allocation environment.

>By having separate pools for separate lengths of blocks, one can>extend this technique to multiple sizes of blocks.

Certainly. But that doesn't make a very good general purpose
allocator. Thus the application would presumably include its own
allocator. That's equally possible in a garbage collected system or
one with explicit deallocation. Thus it seems to me the issue is moot
for this kind of application. Even a non-real-time GC is fine if you
don't use it to allocate while the system is running.

(I would claim fixed size blocks also help a GC, but I think that's
beside the point here. And the improvement is probably less
substantial, depending on the GC.)