gc algorithm inside.net luo bingqiao 5/22/2009. agenda 1. 经典基本垃圾回收算法 2.clr...
Post on 29-Dec-2015
236 Views
Preview:
TRANSCRIPT
经典基本垃圾回收算法
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
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
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
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
More Information
• ExternalISMM forum<<Garbage Collection>>, Algorithms for automatic
Dynamic Memory managements• Email
lbq1221119@hotmail.com
top related