"Vladimir Panteleev" wrote in message
news:remgknxogqlfwfnsu...@forum.dlang.org...
Recording the information necessary to free memory costs performance (and
more memory) itself. With a basic bump-the-pointer scheme, you don't need
to worry about page sizes or free lists or heap fragmentation - all
allocated data is contiguous, there is no metadata, and you can't back out
of that.
It's possible that we could use a hybrid approach, where a GB or so is
allocated from the GC in one chunk, then filled up using a bump-pointer
allocator. When that's exhausted, the GC can start being used as normal for
the rest of the compilation. The big chunk will obviously never be freed,
but the GC still has a good chance to keep memory usage under control. (on
64-bit at least)