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

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

Jan 08, 2016

Download

Documents

Calvin

GC Algorithm inside .NET Luo Bingqiao 5/22/2009. Agenda. 经典基本垃圾回收算法 CLR 中垃圾回收算法介绍 SSCLI 中 Garbage Collection 源码分析. 经典基本垃圾回收算法. Reference Counting 算法 Mark-Sweep 与 Mark-Sweep-Compact 算法 Copying 算法. Reference Counting 算法. Storing the Number of reference, Pointers, and resource such - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

GC Algorithm inside .NETLuo Bingqiao5/22/2009

Page 2: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

Agenda

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

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

3. SSCLI中 Garbage Collection源码分析

Page 3: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

经典基本垃圾回收算法

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

Page 4: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

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

Page 5: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

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

Page 6: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

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

Page 7: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

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

Page 8: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

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

Page 9: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

Copy and Collect

Advantages and Disadvantages

• Conceptual Simplicity

• Copy operation needs to be done for all objects

• Blocks a lot of memory unnecessarily

Page 10: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

What happens in CLR and JVM?

Page 11: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

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

Page 12: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

Heap Organization

Heap organization for the train algorithm.

Page 13: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

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

Page 14: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

Mark Phase:

Page 15: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

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

Page 16: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

Sweep Phase:

Put all dead objects on a free list

Page 17: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

Managed Heap after Compact:

Page 18: GC Algorithm inside .NET Luo Bingqiao 5/22/2009

Finalization Internals

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

More Information

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

Dynamic Memory managements• Email

[email protected]