Heap architectures for concurrent languages using message passing

We discuss alternative heap architectures for languages that rely on automatic memory management and implement concurrency through asynchronous message passing. We describe how interprocess communication and garbage collection happens in each architecture, and extensively discuss the tradeoffs that are involved. In an implementation setting (the Erlang/OTP system) where the rest of the runtime system is unchanged, we present a detailed experimental comparison between these architectures using both synthetic programs and large commercial products as benchmarks.

[1]  Guy E. Blelloch,et al.  A parallel, real-time garbage collector , 2001, PLDI '01.

[2]  James R. Larus,et al.  A concurrent copying garbage collector for languages that distinguish (im)mutable data , 1993, PPOPP '93.

[3]  Mikael Pettersson,et al.  A high performance Erlang system , 2000, PPDP '00.

[4]  Erik Ruf,et al.  Effective synchronization removal for Java , 2000, PLDI '00.

[5]  Bruno Blanchet,et al.  Escape analysis for object-oriented languages: application to Java , 1999, OOPSLA '99.

[6]  Damien Doligez,et al.  A concurrent, generational garbage collector for a multithreaded implementation of ML , 1993, POPL '93.

[7]  Jesper Wilhelmsson Exploring Alternative Memory Architectures for Erlang: Implementation and Performance Evaluation , 2002 .

[8]  Jong-Deok Choi,et al.  Escape analysis for Java , 1999, OOPSLA '99.

[9]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[10]  Peter Lee,et al.  Generational stack collection and profile-driven pretenuring , 1998, PLDI.

[11]  BlanchetBruno Escape analysis for object-oriented languages , 1999 .

[12]  Joe L. Armstrong,et al.  One Pass Real-Time Generational Mark-Sweep Garbage Collection , 1995, IWMM.

[13]  J. Eliot B. Moss,et al.  Sapphire: copying GC without stopping the world , 2001, JGI '01.

[14]  Benjamin Goldberg,et al.  Escape analysis on lists , 1992, PLDI '92.

[15]  Marc Feeley,et al.  A compacting incremental collector and its performance in a production quality compiler , 1998, ISMM '98.

[16]  Wilson C. Hsieh,et al.  Processes in KaffeOS: isolation, resource management, and sharing in java , 2000, OSDI.

[17]  Bjarne Steensgaard,et al.  Thread-specific heaps for multi-threaded programs , 2000, ISMM '00.

[18]  Sven-Olof Nyström,et al.  Profile-guided optimization across process boundaries , 2000, DYNAMO '00.

[19]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[20]  V. T. Rajan,et al.  Java without the coffee breaks: a nonintrusive multiprocessor garbage collector , 2001, PLDI '01.

[21]  Paul R. Wilson,et al.  Uniprocessor Garbage Collection Techniques , 1992, IWMM.

[22]  Chris J. Cheney A nonrecursive list compacting algorithm , 1970, Commun. ACM.

[23]  Scott Nettles,et al.  Real-time replication garbage collection , 1993, PLDI '93.