Published in 1996, Richard Jones's Garbage Collection was a milestone in the area of automatic memory management. The field has grown considerably since then, sparking a need for an updated look at the latest state-of-the-art developments. The Garbage Collection Handbook: The Art of Automatic Memory Management brings together a wealth of knowledge gathered by automatic memory management researchers and developers over the past fifty years. The authors compare the most important approaches and state-of-the-art techniques in a single, accessible framework. 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. Along with simple and traditional algorithms, the book covers parallel, incremental, concurrent, and real-time garbage collection. Algorithms and concepts are often described with pseudocode and illustrations. The nearly universal adoption of garbage collection by modern programming languages makes a thorough understanding of this topic essential for any programmer. This authoritative handbook gives expert insight on how different collectors work as well as the various issues currently facing garbage collectors. Armed with this knowledge, programmers can confidently select and configure the many choices of garbage collectors. Web Resource The book's online bibliographic database at www.gchandbook.org includes over 2,500 garbage collection-related publications. Continually updated, it contains abstracts for some entries and URLs or DOIs for most of the electronically available ones. The database can be searched online or downloaded as BibTeX, PostScript, or PDF.
......(更多)
理查德·琼斯(Richard Jones)
坎特伯雷-肯特大学计算机学院教授。1998年联合创立了国际存储管理研讨会,并担任*届会议主席。他发表了多篇关于垃圾回收技术、堆可视化技术、电子出版技术相关的论文,多次担任主要国际会议计划委员会的常务委员,同时还是《Software Practice and Experience》杂志的编辑委员会成员。因在动态存储管理领域的研究和学术成绩,他于2005年被聘任为格拉斯哥大学名誉研究员,2006年被计算机协会评为杰出科学家。
安东尼·霍思金(Antony Hosking)
普渡大学西拉法叶分校计算机学院副教授。他的主要研究方向是编程语言的设计与实现,特别是数据库与持久化编程语言、面向对象数据库系统、动态存储管理、编译器优化以及编程语言和应用的架构支持。
艾略特·莫斯(Eliot Moss)
马萨诸塞大学阿默斯特分校计算机科学学院教授。他的主要研究方向为编程语言及其实现,而且早在1978年就构建出垃圾回收器。除了自动存储管理领域之外,他在持久编程语言、虚拟机实现、事务性编程与事务内存方面也拥有较高的知名度。他曾与IBM研究员一起推动Jikes RVM Java虚拟机的学术研究许可,并*终促使其成为开源项目。
......(更多)
Introduction
Explicit deallocation
Automatic dynamic memory management
Comparing garbage collection algorithms
A performance disadvantage?
Experimental methodology
Terminology and notation
Mark-Sweep Garbage Collection
The mark-sweep algorithm
The tricolor abstraction
Improving mark-sweep
Bitmap marking
Lazy sweeping
Cache misses in the marking loop
Issues to consider
Mark-Compact Garbage Collection
Two-finger compaction
The Lisp 2 algorithm
Threaded compaction
One-pass algorithms
Issues to consider
Copying Garbage Collection
Semispace copying collection
Traversal order and locality
Issues to consider
Reference Counting
Advantages and disadvantages of reference counting
Improving efficiency
Deferred reference counting
Coalesced reference counting
Cyclic reference counting
Limited-field reference counting
Issues to consider
Comparing Garbage Collectors
Throughput
Pause time
Space
Implementation
Adaptive systems
A unified theory of garbage collection
Allocation
Sequential allocation
Free-list allocation
Fragmentation
Segregated-fits allocation
Combining segregated-fits with first-, best-, and next-fit
Additional considerations
Allocation in concurrent systems
Issues to consider
Partitioning the Heap
Terminology
Why to partition
How to partition
When to partition
Generational Garbage Collection
Example
Measuring time
Generational hypotheses
Generations and heap layout
Multiple generations
Age recording
Adapting to program behavior
Inter-generational pointers
Space management
Older-first garbage collection
Beltway
Analytic support for generational collection
Issues to consider
Abstract generational garbage collection
Other Partitioned Schemes
Large object spaces
Topological collectors
Hybrid mark-sweep, copying collectors
Bookmarking garbage collection
Ulterior reference counting
Issues to consider
Run-Time Interface
Interface to allocation
Finding pointers
Object tables
References from external code
Stack barriers
GC safe points and mutator suspension
Garbage collecting code
Read- and write-barriers
Managing address space
Applications of virtual memory page protection
Choosing heap size
Issues to consider
Language-Specific Concerns
Finalization
Weak references
Issues to consider
Concurrency Preliminaries
Hardware
Hardware memory consistency models
Hardware primitives
Progress guarantees
Notation used for concurrent algorithms
Mutual exclusion
Work sharing and termination detection
Concurrent data structures
Transactional memory
Issues to consider
Parallel Garbage Collection
Is there sufficient work to parallelize?
Load balancing
Synchronization
Taxonomy
Parallel marking
Parallel copying
Parallel sweeping
Parallel compaction
Issues to consider
Concurrent Garbage Collection
Correctness of concurrent collection
Barrier techniques for concurrent collection
Issues to consider
Concurrent Mark-Sweep
Initialization
Termination
Allocation
Concurrent marking and sweeping
On-the-fly marking
Abstract concurrent collection
Issues to consider
Concurrent Copying and Compaction
Mostly concurrent copying: Baker’s algorithm
Brooks’ indirection barrier
Self-erasing read barriers
Replication copying
Multi-version copying
Sapphire
Concurrent compaction
Issues to consider
Concurrent Reference Counting
Simple reference counting revisited
Buffered reference counting
Concurrent, cyclic reference counting
Taking a snapshot of the heap
Sliding views reference counting
Issues to consider
Real-Time Garbage Collection
Real-time systems
Scheduling real-time collection
Work-based real-time collection
Slack-based real-time collection
Time-based real-time collection: Metronome
Combining scheduling approaches: Tax-and-Spend
Controlling fragmentation
Issues to consider
Glossary
Bibliography
Index
......(更多)
Rset is a set of fields that include all references from the old gen to the nursery
Mark-Copy's first phase marks all live objects, and constructs per-block unidirectional Rsets and count the vol of live data of each block.
......(更多)