On Sat, 6 Sep 2008, Ashley Yakeley wrote:

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.

Oh, I see. Yes, sorry.

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.

I would call it a leak if something that is no longer being used cannot be reclaimed. The endless stream of different modules is possible in long-running systems where the code being run evolves or changes over time (e.g. something like lambdabot, which runs user-provided code).

Cheers,

Ganesh
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to