[Haskell-cafe] Re: Top Level <-

Ashley Yakeley ashley at semantic.org
Sat Sep 6 04:08:03 EDT 2008

Ganesh Sittampalam wrote:
>> But it's limited to the initialisers. An IORef holding an Integer 
>> isn't much memory, and it only ever gets leaked once.

> It happens every time you load and unload, surely?

No. An initialiser is only ever run once per run of the RTS.

> Also I thought this was a general discussion with Data.Unique as a 
> concrete example; something else might leak substantially more memory. 
> Your witnesses stuff would leak one Integer per module, wouldn't it?

It would leak one Integer per IOWitness initialiser for the run of the RTS.

> Finally, any memory leak at all can be unacceptable in some contexts. 
> It's certainly not something we should just dismiss as "oh, it's only 
> small".

Since it's of the order of the number of uniquely identified 
initialisers, it's arguably not a memory leak so much as a static 
overhead. The only way to get a continuous leak is to load and unload an 
endless stream of _different_ modules, each with their own initialisers.

Ashley Yakeley

More information about the Haskell-Cafe mailing list