[I've been away from the computer] The Web server does this so that requests don't cause the GC to run and create a pause. Instead, the GC is always possibly running so that it will run when the server isn't being accessed. That's the idea at least. I didn't do very involved experiments to see that it was a good idea. I found anecdotally that it helped around submission times with the Continue server.
Jay 2011/7/14 Greg Hendershott <greghendersh...@gmail.com>: > Once upon a time I noticed the Racket web server has a thread that > calls collect-garbage periodically (e.g. every 5 minutes). > > I've discovered I need to do the same, for any program that needs to > run for hours or days. Otherwise, the program eventually abends: Out > of memory. Sometimes with a "Racket virtual machine error" message. > This is my experience on both Windows 7 and on Linux, with Racket 5.0 > and 5.1.1. > > As a result the following has become a "magic spell" I now throw into > such programs: > > ;; Make a thread to do garbage collection every 5 minutes. > (thread > (lambda () > (let loop () > (sleep (* 5 60)) > (collect-garbage) > (loop)))) > > It seems weird to have such a magic spell, and to know it only from > nosing around the web server source. > > Instead, maybe the Racket runtime should do this automatically (at > least by default)? I think that's people would expect coming from some > other language environments with GC (at least it's what I expected). > > Or, at least it would be documented that this is by-design (say for > performance reasons, or there's no reasonable default, or whatever), > and that people should use such a magic spell for long-running > systems? > _________________________________________________ > For list-related administrative tasks: > http://lists.racket-lang.org/listinfo/users > -- Jay McCarthy <j...@cs.byu.edu> Assistant Professor / Brigham Young University http://faculty.cs.byu.edu/~jay "The glory of God is Intelligence" - D&C 93 _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users