[Haskell-cafe] Trying to fix space leak

Paul Johnson paul at cogito.org.uk
Mon Dec 31 10:53:09 EST 2007


Ben Challenor wrote:
> Hi
>
> I'm learning Haskell through writing a compiler. I'm seeing huge 
> memory use in a function which converts the dataflow graph to the form 
> required by Data.Graph.  [...]
> I assume the allocation is being garbage-collected pretty quickly, 
> because a) 6,616,297,296 bytes is stupid (!) and b) Process Explorer 
> informs me that the peak private bytes of the program is not more than 
> a couple of MB.
Thats not a space leak.  A space leak is when you find that all 6 GB of 
that allocation is being retained.  You are correct that the GC is 
recovering this space as fast as it gets allocated.

The profiler records how much memory is allocated from within various 
bits of your program to help you understand its performance and where 
optimisable hotspots are.  I haven't looked at your code, but I imagine 
that you are traversing lazy data structures, which means that bits of 
the structure are consumed and deallocated as fast as they are created.

The profiler also has options to help you understand what is being 
retained where.

I'd advise against trying to make your program stricter because you 
might suddenly find yourself building an entire 6GB structure in memory 
before traversing it, which would not be a Good Thing.

Paul.



More information about the Haskell-Cafe mailing list