Richard Jones

with a chapter on Distributed Garbage Collection by R. Lins

John Wiley & Sons, Ltd ISBN 0-471-94148-4. 403 pages, hardback

Table of Contents

1Prefacexxiii
1Introduction1
1.1History of storage allocation2
1.1State, liveness and pointer reachability4
1.1Explicit allocation on the heap5
1.1Why garbage collect?8
1.1How costly is garbage collection?12
1.1Comparing garbage collection algorithms13
1.1Notation16
1.1Notes18
2The Classical Algorithms19
2.1The Reference Counting Algorithm19
2.1The Mark-Sweep Algorithm25
2.1The Copying Algorithm28
2.1Comparing mark-sweep and copying collection33
2.1Issues to consider36
2.1Notes39
3Reference Counting43
3.1Non-recursive freeing44
3.1Deferred reference counting45
3.1Limited-field reference counts50
3.1Hardware reference counting55
3.1Cyclic reference counting56
3.1Issues to consider69
3.1Notes72
4Mark-Sweep Garbage Collection75
4.1Comparisons with reference counting75
4.1Using a marking stack77
4.1Pointer reversal82
4.1Bitmap marking87
4.1Lazy sweeping88
4.1Issues to consider93
4.1Notes95
5Mark-Compact Garbage Collection97
5.1Fragmentation97
5.1Styles of compaction99
5.1The Two-Finger Algorithm101
5.1The Lisp 2 Algorithm103
5.1Table-based methods105
5.1Threaded methods107
5.1Issues to consider112
5.1Notes114
6Copying Garbage Collection117
6.1Cheney's copying collector118
6.1Cheap allocation124
6.1Multiple-area collection126
6.1Garbage collector efficiency128
6.1Locality issues129
6.1Regrouping strategies131
6.1Issues to consider137
6.1Notes140
7Generational Garbage Collection143
7.1The generational hypothesis143
7.1Generational garbage collection146
7.1Promotion policies152
7.1Generation organisation and age recording159
7.1Inter-generational pointers165
7.1Non-copying generational garbage collection174
7.1Scheduling garbage collections175
7.1Issues to consider179
7.1Notes180
8Incremental and Concurrent Garbage Collection183
8.1Synchronisation185
8.1Barrier methods187
8.1Mark-Sweep collectors188
8.1Concurrent Reference Counting200
8.1Baker's Algorithm202
8.1The Appel--Ellis--Li collector209
8.1Replication Copying Collectors213
8.1Baker's Treadmill collector218
8.1Hardware support for real-time garbage collection220
8.1Issues to consider222
8.1Notes223
9Garbage Collection for C227
9.1A taxonomy of ambiguous roots collection228
9.1Conservative garbage collection230
9.1Mostly Copying collection241
9.1The optimising compiler devil247
9.1Issues to consider249
9.1Notes251
10Garbage Collection for C++253
10.1Garbage collection for object-oriented languages254
10.1Requirements for a C++ garbage collector256
10.1In the compiler or in a library?257
10.1Conservative garbage collection258
10.1Mostly Copying collection258
10.1Smart pointers261
10.1Changes to C++ to support garbage collection269
10.1The Ellis--Detlefs proposal270
10.1Finalisation271
10.1Issues to consider273
10.1Notes274
11Cache-Conscious Garbage Collection277
11.1Modern processor architectures277
11.1Cache architectures 279
11.1Patterns of memory access284
11.1Standard ways to improve cache performance287
11.1Miss rate and overall cache performance294
11.1Special purpose hardware296
11.1Issues to consider297
11.1Notes298
12Distributed Garbage Collection299
12.1Requirements300
12.1Virtually shared memory301
12.1Distributed garbage collection issues304
12.1Distributed mark-sweep307
12.1Distributed copying312
12.1Distributed reference counting313
12.1Garbage collecting actors317
12.1Notes318
Glossary321
Bibliography329
Index365

Copyright © 1999 · Richard Jones