Anyone here has any experience with the GCs of Allegro or LispWorks or any other commercial Lisp implementations?
Anyone here has any experience with the GCs of Allegro or LispWorks or any other commercial Lisp implementations?
Franz Inc uses Allegro CL in a large database. They tuned the GC quite a bit for that. But there were also other GC demanding applications on Allegro CL, for example in CAD and 3D design. They are now working on a concurrent GC, something which is still rare in the Lisp world.
[1] just an educated guess. I have no real knowledge of GCs other than skimming how they work in articles and runtime/language docs.
Each Erlang process has a separate heap that is collected independently; because the process heap is usually small a stop-the-process collection does not take much time.
The downside is that sending messages between processes requires copying all the data that is sent between process heaps.
Supposedly they have a concurrent GC in the works but I haven't played with it.
> I've worked a lot with LispWorks and tuning the gc had the same method of programmatically calling a full GC after every N operations.
What is "full GC", here? Do you mean, even the "older" generations? (Assuming Lispworks also has generational GC a la sbcl)
In other words, Would it have helped if the implementation was a mark-compact rather than generational?
http://www.lispworks.com/documentation/lw60/LW/html/lw-712.h...
with the full set to nil.