Difference between revisions of "Versus the garbage collector"

From D Wiki
Jump to: navigation, search
(Category:Garbage Collection)
 
(6 intermediate revisions by 2 users not shown)
Line 27: Line 27:
 
* Contra: Cycles would leak
 
* Contra: Cycles would leak
 
* Contra: Overhead due to inc/dec operations
 
* Contra: Overhead due to inc/dec operations
 +
* Open question: Does ARC guarantee memory safety?
  
 
=== Library Reference Counting ===
 
=== Library Reference Counting ===
Line 46: Line 47:
 
* Cannot find original thread
 
* Cannot find original thread
  
== Links ==
+
== External links ==
  
* http://forum.dlang.org/post/bsqqfmhgzntryyaqrtky@forum.dlang.org
+
* [http://forum.dlang.org/post/bsqqfmhgzntryyaqrtky@forum.dlang.org The "no gc" crowd]
 +
* [http://forum.dlang.org/post/l34lei$255v$1@digitalmars.com draft proposal for ref counting in D]
 +
* [ftp://ftp.sgi.com/other/gc/issues.html (About the Boehm GC, but generally interesting)]
 +
* [http://www.hpl.hp.com/techreports/2003/HPL-2003-215.html The Space Cost of Lazy Reference Counting (technical report)]
 +
* [http://www.quora.com/Computer-Programming/How-do-reference-counting-and-garbage-collection-compare/answer/Jon-Harrop-1?srid=3Gvg&share=1 Jon Harrop's answer to: Computer Programming: How do reference counting and garbage collection compare?]
 +
 
 +
[[Category:Garbage Collection]]

Latest revision as of 07:08, 26 January 2019

The big discussion about the garbage collector repeatedly comes up. This page tries to provide a summary.


Why GC is bad

  • Unpredictable pauses which stop the world
  • Current implementation sucks

Why GC is good

  • Safe by default and non-leaking memory management
  • Acceptable performance for many cases
  • Supports immutable types

Common Ground

  • We want something, which is safe by default

Proposals

Compiler-supported Reference Counting

Compiler generates reference counting for all references

  • Pro: More predictable
  • Pro: No manual rewriting necessary
  • Contra: Cycles would leak
  • Contra: Overhead due to inc/dec operations
  • Open question: Does ARC guarantee memory safety?

Library Reference Counting

Use std.typecons.RefCounted

  • Pro: Garbage collector still provides safety
  • Contra: Lots of manual work
  • Contra: Overhead due to inc/dec operations

DIP18: nogc attribute

  • Pro: Compile-time checked
  • Pro: Selective usage
  • Contra: Attribute creep

Implement Certain Interface

  • Cannot find original thread

External links