Persistent data

Sengan.Baring-Gould@nsc.com Sengan.Baring-Gould@nsc.com
Mon, 3 Mar 2003 13:38:14 -0500


Is there some way to reduce the cost of garbage collection over large persistent
datastructures without resorting to escaping to C to malloc memory outside the
heap?

The program I'm working is part database, which cannot discard information.
The net result is that I see figures like 82.9% of the time taken by garbage
collection. The heap profile looks like a charging capacitor: a linear increase
(as expected) which is slowly dilated as time increases by the garbage collector
thrashing memory.

When I worked on the LOLITA natural language processor we solved the problem
by moving a lot of the data out to C++, so that the heap only contains things
soon to be freed. I know generational garbage collection is supposed to help,
but it doesn't seem to. Is there a pure Haskell solution to this problem?

Sengan