Ketil Malde wrote:
wren ng thornton <w...@freegeek.org> writes:
> FWIW, the JVM also fails to release memory resources back to the
> OS. Given all the problems I've seen that one cause for long-running
> processes, I'm definitely in support of correcting any behavior like
> this in the GHC RTS.

I'm curious what real problems arise from this?  As far as I can tell,
virtual memory and overcommit ought to make this (i.e. not releasing
memory back to the OS) mostly harmless.  Is this on particular systems
with different properties than your average run-of-the-mill Unix?

Consider a process, A, which goes through a cycle of spawning off another process, B, and reaping its output. More specifically, A consumes a lot of memory when B is not running, but then flushes most of it before spawning B and then idles until B is done. Also B consumes a lot of memory (which is always returned to the system each time B is terminated).

If A cannot return memory to the system prior to spawning B, this will cause the OS to over-commit memory, which will cause various OSes to either kill the process, start thrashing, or other Bad Things(tm). I'd have to ask my coworker which particular systems caused the most problems, but we target all of Linux, OSX, and Windows for the toolkit that includes both A and B.

--
Live well,
~wren
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to