vindarel / lisp-journey

Discovering the Common Lisp ecosystem. https://lisp-journey.gitlab.io/
2 stars 0 forks source link

blog/pro-mailing-list-on-common-lisp-and-parallel-gc/ #20

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

Pro mailing list: on Common Lisp and parallel GC - Lisp journey

I recently enjoyed this discussion on the pro mailing list. It started with a call of recommendations on music software, and the discussion evolved in discussing parallel garbage collection. By the way, can you site an implementation that has parallel GC?Pascal Costanza:«When moving our elPrep software away from Common Lisp, we evaluated C++, Go and Java as potential candidates, and Go turned out to provide the best balance between performance and memory use.

https://lisp-journey.gitlab.io/blog/pro-mailing-list-on-common-lisp-and-parallel-gc/

easye commented 3 years ago

«Which CL implementations have a parallel GC?»

When one runs ABCL on a suitable JVM with ZGC or Shenandoah, then it has parallel GC.

vindarel commented 3 years ago

Thanks for completing the list! Best,

vindarel commented 3 years ago

And it looks like Allegro CL also offers parallel GC: https://franz.com/support/documentation/current/doc/release-notes.htm#acl-new

New Features in 10.0: Parallel Global Garbage Collection

no-defun-allowed commented 2 years ago

The newer GCs of Go and the JVM (ZGC and Shenandoah) are not generational and employ techniques such as pointer coloring and store/load barriers by instrumenting all object read/write operations instead of using virtual memory protection (which tends to have a non-indifferent performance penalty)

Note that the Go GC doesn't use pointer colouring or load barriers, but it cannot compact memory as a consequence. Store barriers are also common for mostly-concurrent collectors like G1 and CMS.

Nowadays ZGC and Shenandoah are getting generational versions, too.