Difference between revisions of "Versus the garbage collector"
(add open question of memory safety for ARC) |
m (one more link) |
||
Line 50: | Line 50: | ||
* http://forum.dlang.org/post/bsqqfmhgzntryyaqrtky@forum.dlang.org | * http://forum.dlang.org/post/bsqqfmhgzntryyaqrtky@forum.dlang.org | ||
+ | * http://forum.dlang.org/post/l34lei$255v$1@digitalmars.com |
Revision as of 20:50, 11 October 2013
The big discussion about the garbage collector repeatedly comes up. This page tries to provide a summary.
Contents
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