Papers We Love #1 - Michael Bernstein on A Unified Theory of Garbage Collection #1

Closed
zeeshanlakhani opened this Issue Jan 30, 2014 · 5 comments

Comments

4 participants
@zeeshanlakhani
Member

zeeshanlakhani commented Jan 30, 2014

@mrb

This issue has been created to start/spark/organize a conversation on the paper A Unified Theory of Garbage Collection by Bacon, Cheng, Rajan.

Please offer up questions, comments, or additional information regarding this paper.

  • Paper can be found in this repo or here.
@zeeshanlakhani

This comment has been minimized.

Show comment
Hide comment
Member

zeeshanlakhani commented Feb 25, 2014

Slides are up.

@bowmanb

This comment has been minimized.

Show comment
Hide comment
@bowmanb

bowmanb Feb 25, 2014

Member

My favorite parts of the paper were Generational Garbage Collection and The Train Algorithm.

Member

bowmanb commented Feb 25, 2014

My favorite parts of the paper were Generational Garbage Collection and The Train Algorithm.

@zeeshanlakhani

This comment has been minimized.

Show comment
Hide comment
@zeeshanlakhani

zeeshanlakhani Feb 25, 2014

Member

or summed up here:

image

Member

zeeshanlakhani commented Feb 25, 2014

or summed up here:

image

DarrenN added a commit that referenced this issue Mar 6, 2014

Merge pull request #1 from arc90/part-2-communicating-seq-processes
Discussion on Communicating Sequential Processes (paper) by C.A.R. Hoare

zeeshanlakhani pushed a commit that referenced this issue Mar 19, 2014

Merge pull request #1 from papers-we-love/master
Merge in stuff from upstream

@jeremyheiler jeremyheiler added the meetup label Aug 2, 2014

@zeeshanlakhani zeeshanlakhani changed the title from Papers We Love #1 to Papers We Love #1 - Michael Bernstein on A Unified Theory of Garbage Collection Dec 26, 2014

@jdh30

This comment has been minimized.

Show comment
Hide comment
@jdh30

jdh30 Mar 6, 2015

In the lecture you say that garbage collection is "batch, no cost per mutation, has long pause times and is not real-time" and reference counting is "incremental, high cost per mutation, short pause times and is real-time".

Incremental tracing algorithms were introduced in the 1970s and real-time concurrent and parallel GCs exist to day so tracing GC is not necessarily batch and does not necessarily have long pause times and can be real-time.

Immediate reference counting has to deallocate an arbitrary DAG of objects as soon as the last root is decremented to zero which incurs an arbitrarily-long pause so it is not incremental, does not necessarily have short pause times and is not real-time. The unbounded-pause-time problem with immediate reference counting is easily fixed by using deferred reference counting.

Another issue I have (with the original paper as well) is the implication that immediate reference counting does not have floating garbage. It does. Garbage can be created halfway through a callee but the decrement to zero will not occur until the caller returns in which case the garbage is floating until the callee returns.

EDIT: Also worth noting that you're assuming malloc and free are real-time.

jdh30 commented Mar 6, 2015

In the lecture you say that garbage collection is "batch, no cost per mutation, has long pause times and is not real-time" and reference counting is "incremental, high cost per mutation, short pause times and is real-time".

Incremental tracing algorithms were introduced in the 1970s and real-time concurrent and parallel GCs exist to day so tracing GC is not necessarily batch and does not necessarily have long pause times and can be real-time.

Immediate reference counting has to deallocate an arbitrary DAG of objects as soon as the last root is decremented to zero which incurs an arbitrarily-long pause so it is not incremental, does not necessarily have short pause times and is not real-time. The unbounded-pause-time problem with immediate reference counting is easily fixed by using deferred reference counting.

Another issue I have (with the original paper as well) is the implication that immediate reference counting does not have floating garbage. It does. Garbage can be created halfway through a callee but the decrement to zero will not occur until the caller returns in which case the garbage is floating until the callee returns.

EDIT: Also worth noting that you're assuming malloc and free are real-time.

@zeeshanlakhani

This comment has been minimized.

Show comment
Hide comment
@zeeshanlakhani

zeeshanlakhani Mar 6, 2015

Member

nice to ping @mrb and @aturley here :).

Member

zeeshanlakhani commented Mar 6, 2015

nice to ping @mrb and @aturley here :).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment