19
GC Algorithm inside .NET Luo Bingqiao 5/22/2009

GC Algorithm inside.NET Luo Bingqiao 5/22/2009. Agenda 1. 经典基本垃圾回收算法 2.CLR 中垃圾回收算法介绍 3.SSCLI 中 Garbage Collection 源码分析

Embed Size (px)

Citation preview

GC Algorithm inside .NETLuo Bingqiao5/22/2009

Agenda

1.经典基本垃圾回收算法

2. CLR中垃圾回收算法介绍

3. SSCLI中 Garbage Collection源码分析

经典基本垃圾回收算法

1. Reference Counting算法2. Mark-Sweep与Mark-Sweep-Compact算法3. Copying 算法

Reference Counting算法Storing the Number of reference, Pointers, and resource such

as an Object or Memory block.

• Simple reference counting

• Deferred reference counting

• One-bit reference counting

• Weighted reference counting

Reference Counting算法

Advantages and Disadvantages

• Reclaim objects promptly

• Difficult to resolve circular references

RC=1

RC=1

RC=1

RC=1

RC=1

RC=1Examples of Use:

• COM, Cocoa, Delphi, PHP, Python

Mark-Sweep

• Initially, allocate objects on the heap sequentially

• At some stage, mark the objects that are dead and can be removed

• Free the dead object slots at some stage

Mark-Sweep

Advantages and Disadvantages

• Minimal house-keeping overhead (just one free list)

• Every allocation request requires a walk thru the free list, makes allocations slow

• Heap fragmentation

Examples of Use:

• C Runtime Heap, .NET Micro Framework

Copy and Collect

• Keep two heaps

• Allocate only from one heap

• When collection is triggered on the heap, copy all alive objects to the second heap

• Switch the roles of heaps

Copy and Collect

Advantages and Disadvantages

• Conceptual Simplicity

• Copy operation needs to be done for all objects

• Blocks a lot of memory unnecessarily

What happens in CLR and JVM?

GC Algorithms in advanced OO language VMS

• Mark Sweep Compact / Train algorithm

• Generational incremental Collector

• Large Object Heap

• Segments

• Finalization in CLR

• Weak References

• Pinning

• Object Layout

Heap Organization

Heap organization for the train algorithm.

Overall of GC Algorithm

• Mark bit set, and if required Pin bit also set

Mark

• Grow or shrink the heap as needed

Plan• Objects are

moved to the new addresses

Compact

Mark Phase:

Mark Phase

Separate the live objects from dead objects for the

generation being collected.

• All small dead objects have their Mark bit set, and if required Pin bit also set

• Finalizable objects are put on the FReachable queue

• Weak pointers to dead objects are nulled

• All large dead objects are put on the FreeList

Sweep Phase:

Put all dead objects on a free list

Managed Heap after Compact:

Finalization Internals

More Information

• ExternalISMM forum<<Garbage Collection>>, Algorithms for automatic

Dynamic Memory managements• Email

[email protected]