Book description
The book addresses new challenges to garbage collection made by recent advances in hardware and software. It explores the consequences of these changes for designers and implementers of high performance garbage collectors
Table of contents
- Cover
- Half Title
- Title Page
- Copyright Page
- Dedication
- Contents (1/2)
- Contents (2/2)
- List of Algorithms
- List of Figures
- List of Tables
- Preface (1/2)
- Preface (2/2)
- Acknowledgements
- Authors
- 1. Introduction
- 2. Mark-sweep garbage collection
- 3. Mark-compact garbage collection
- 4. Copying garbage collection
- 5. Reference counting
- 6. Comparing garbage collectors
- 7. Allocation
- 8. Partitioning the heap
-
9. Generational garbage collection
- 9.1. Example
- 9.2. Measuring time
- 9.3. Generational hypotheses
- 9.4. Generations and heap layout
- 9.5. Multiple generations
- 9.6. Age recording
- 9.7. Adapting to program behaviour
- 9.8. Inter-generational pointers
- 9.9. Space management
- 9.10. Older-first garbage collection
- 9.11. Beltway
- 9.12. Analytic support for generational collection
- 9.13. Issues to consider
- 9.14. Abstract generational garbage collection
-
10. Other partitioned schemes
- 10.1. Large object spaces
- 10.2. Topological collectors
- 10.3. Hybrid mark-sweep, copying collectors
- 10.4. Garbage-First: collecting young regions
- 10.5. Trading space and time
- 10.6. Mark-region collection: immix
- 10.7. Copying collection in a constrained memory space
- 10.8. Bookmarking garbage collection
- 10.9. Ulterior reference counting
- 10.10. Issues to consider
-
11. Run-time interface
- 11.1. Interface to allocation
-
11.2. Finding pointers
- Conservative pointer finding
- Accurate pointer finding using tagged values
- Accurate pointer finding in objects
- Accurate pointer finding in global roots
- Accurate pointer finding in stacks and registers (1/2)
- Accurate pointer finding in stacks and registers (2/2)
- Accurate pointer finding in code
- Handling interior pointers
- Handling derived pointers
- 11.3. Object tables
- 11.4. References from external code
- 11.5. Stack barriers
- 11.6. GC safe-points and mutator suspension
- 11.7. Garbage collecting code
- 11.8. Read and write barriers
- 11.9. Managing address space
- 11.10. Applications of virtual memory page protection
- 11.11. Choosing heap size
- 11.12. Issues to consider
-
12. Language-specific concerns
-
12.1. Finalisation
- When do finalisers run?
- Which thread runs a finaliser?
- Can finalisers run concurrently with each other?
- Can finalisers access the object that became unreachable?
- When are finalised objects reclaimed?
- What happens if there is an error in a finaliser?
- Is there any guaranteed order to finalisation?
- The finalisation race problem
- Finalisers and locks
- Finalisation and weak references
- Finalisation in particular languages
- For further study
- 12.2. Weak references
- 12.3. Changing object layout
- 12.4. Issues to consider
-
12.1. Finalisation
-
13. Concurrency preliminaries
- 13.1. Hardware
- 13.2. Hardware memory consistency
- 13.3. Hardware primitives
- 13.4. Progress guarantees
- 13.5. Notation used for concurrent algorithms
- 13.6. Mutual exclusion
- 13.7. Work sharing and termination detection
- 13.8. Concurrent data structures
- 13.9. Transactional memory
- 13.10. Issues to consider
- 14. Parallel garbage collection
- 15. Concurrent garbage collection
- 16. Concurrent mark-sweep
- 17. Concurrent copying and compaction
-
18. Concurrent reference counting
- 18.1. LXR: Latency-critical ImmiX with Reference counting
- 18.2. Simple reference counting revisited
- 18.3. Biased reference counting
- 18.4. Buffered reference counting
- 18.5. Concurrent, cyclic reference counting
- 18.6. Taking a snapshot of the heap
- 18.7. Sliding views reference counting
- 18.8. Issues to consider
-
19. Real-time garbage collection
- 19.1. Real-time systems
- 19.2. Scheduling real-time collection
- 19.3. Work-based real-time collection
- 19.4. Slack-based real-time collection
- 19.5. Time-based real-time collection: Metronome
- 19.6. Combining scheduling approaches: Tax-and-Spend
-
19.7. Controlling fragmentation
- Incremental compaction in Metronome
- Incremental replication on uniprocessors
- Stopless: lock-free garbage collection
- Staccato: best-effort compaction with mutator wait-freedom
- Chicken: best-effort compaction with mutator wait-freedom for x86
- Clover: guaranteed compaction with probabilistic mutator lock-freedom
- Stopless versus Chicken versus Clover
- Fragmented allocation
- 19.8. Issues to consider
- 20. Energy-aware garbage collection
- 21. Persistence and garbage collection
- Glossary (1/4)
- Glossary (2/4)
- Glossary (3/4)
- Glossary (4/4)
- Bibliography (1/10)
- Bibliography (2/10)
- Bibliography (3/10)
- Bibliography (4/10)
- Bibliography (5/10)
- Bibliography (6/10)
- Bibliography (7/10)
- Bibliography (8/10)
- Bibliography (9/10)
- Bibliography (10/10)
- Index (1/5)
- Index (2/5)
- Index (3/5)
- Index (4/5)
- Index (5/5)
Product information
- Title: The Garbage Collection Handbook, 2nd Edition
- Author(s):
- Release date: June 2023
- Publisher(s): Chapman and Hall/CRC
- ISBN: 9781000883688
You might also like
book
The Garbage Collection Handbook
Published in 1996, Richard Jones’s Garbage Collection was a milestone in the area of automatic memory …
book
Release It!, 2nd Edition
A single dramatic software failure can cost a company millions of dollars - but can be …
book
The Rules of Programming
This philosophy-of-programming guide presents a unique and entertaining take on how to think about programming. A …
book
Code Complete, 2nd Edition
Widely considered one of the best practical guides to programming, Steve McConnell’s original CODE COMPLETE has …