UniProcessor Garbage Collection Techniques Paul R. Wilson University of Texas Presented By Naomi Sapir Tel-Aviv University.

Slides:



Advertisements
Similar presentations
Garbage collection David Walker CS 320. Where are we? Last time: A survey of common garbage collection techniques –Manual memory management –Reference.
Advertisements

CMSC 330: Organization of Programming Languages Memory and Garbage Collection.
PZ10B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ10B - Garbage collection Programming Language Design.
Lecture 10: Heap Management CS 540 GMU Spring 2009.
Garbage Collection What is garbage and how can we deal with it?
Automatic Storage Management Patrick Earl Simon Leonard Jack Newton.
Lecture 21 Dynamic Memory Allocation:- *Allocation of objects in program ’ s heap _e.g. C ’ s malloc/free or Pascal ’ s new/dispose _e.g. C ’ s malloc/free.
CMSC 330: Organization of Programming Languages Memory and Garbage Collection.
Garbage Collection  records not reachable  reclaim to allow reuse  performed by runtime system (support programs linked with the compiled code) (support.
Run-time organization  Data representation  Storage organization: –stack –heap –garbage collection Programming Languages 3 © 2012 David A Watt,
Garbage Collection CSCI 2720 Spring Static vs. Dynamic Allocation Early versions of Fortran –All memory was static C –Mix of static and dynamic.
By Jacob SeligmannSteffen Grarup Presented By Leon Gendler Incremental Mature Garbage Collection Using the Train Algorithm.
Parallel Garbage Collection Timmie Smith CPSC 689 Spring 2002.
CPSC 388 – Compiler Design and Construction
Increasing Memory Usage in Real-Time GC Tobias Ritzau and Peter Fritzson Department of Computer and Information Science Linköpings universitet
Chapter 8 Runtime Support. How program structures are implemented in a computer memory? The evolution of programming language design has led to the creation.
Memory Management. History Run-time management of dynamic memory is a necessary activity for modern programming languages Lisp of the 1960’s was one of.
1 The Compressor: Concurrent, Incremental and Parallel Compaction. Haim Kermany and Erez Petrank Technion – Israel Institute of Technology.
G Robert Grimm New York University Cool Pet Tricks with… …Virtual Memory.
Garbage Collection Mooly Sagiv html://
Memory Management Chapter 5 Mooly Sagiv
Virtual Memory Primitives for User Programs Andrew W. Appel and Kai Li Presented by: Khanh Nguyen.
Memory Allocation. Three kinds of memory Fixed memory Stack memory Heap memory.
© Richard Jones, Eric Jul, mmnet GC & MM Summer School, July A Rapid Introduction to Garbage Collection Richard Jones Computing Laboratory.
Generational Stack Collection And Profile driven Pretenuring Perry Cheng Robert Harper Peter Lee Presented By Moti Alperovitch
Runtime The optimized program is ready to run … What sorts of facilities are available at runtime.
Incremental Garbage Collection
Memory Allocation and Garbage Collection. Why Dynamic Memory? We cannot know memory requirements in advance when the program is written. We cannot know.
Compilation 2007 Garbage Collection Michael I. Schwartzbach BRICS, University of Aarhus.
Age-Oriented Concurrent Garbage Collection Harel Paz, Erez Petrank – Technion, Israel Steve Blackburn – ANU, Australia April 05 Compiler Construction Scotland.
1 An Efficient On-the-Fly Cycle Collection Harel Paz, Erez Petrank - Technion, Israel David F. Bacon, V. T. Rajan - IBM T.J. Watson Research Center Elliot.
Garbage collection (& Midterm Topics) David Walker COS 320.
Garbage Collection Mooly Sagiv
Damien Doligez Georges Gonthier POPL 1994 Presented by Eran Yahav Portable, Unobtrusive Garbage Collection for Multiprocessor Systems.
Jangwoo Shin Garbage Collection for Real-Time Java.
Uniprocessor Garbage Collection Techniques Paul R. Wilson.
Using Generational Garbage Collection To Implement Cache- conscious Data Placement Trishul M. Chilimbi & James R. Larus מציג : ראובן ביק.
UniProcessor Garbage Collection Techniques Paul R. Wilson University of Texas Presented By Naomi Sapir Tel-Aviv University.
Garbage Collection Memory Management Garbage Collection –Language requirement –VM service –Performance issue in time and space.
A Parallel, Real-Time Garbage Collector Author: Perry Cheng, Guy E. Blelloch Presenter: Jun Tao.
1 Overview Assignment 6: hints  Living with a garbage collector Assignment 5: solution  Garbage collection.
SEG Advanced Software Design and Reengineering TOPIC L Garbage Collection Algorithms.
Exploiting Prolific Types for Memory Management and Optimizations By Yefim Shuf et al.
Ulterior Reference Counting: Fast Garbage Collection without a Long Wait Author: Stephen M Blackburn Kathryn S McKinley Presenter: Jun Tao.
A Real-Time Garbage Collector Based on the Lifetimes of Objects Henry Lieberman and Carl Hewitt (CACM, June 1983) Rudy Kaplan Depena CS395T: Memory Management.
Copyright (c) 2004 Borys Bradel Myths and Realities: The Performance Impact of Garbage Collection Paper: Stephen M. Blackburn, Perry Cheng, and Kathryn.
1 Real-Time Replication Garbage Collection Scott Nettles and James O’Toole PLDI 93 Presented by: Roi Amir.
Incremental Garbage Collection Uwe Kern 23. Januar 2002
Runtime Environments. Support of Execution  Activation Tree  Control Stack  Scope  Binding of Names –Data object (values in storage) –Environment.
Heap storage & Garbage collection Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001.
Runtime System CS 153: Compilers. Runtime System Runtime system: all the stuff that the language implicitly assumes and that is not described in the program.
Garbage Collection and Memory Management CS 480/680 – Comparative Languages.
David F. Bacon Perry Cheng V.T. Rajan IBM T.J. Watson Research Center ControllingFragmentation and Space Consumption in the Metronome.
A REAL-TIME GARBAGE COLLECTOR WITH LOW OVERHEAD AND CONSISTENT UTILIZATION David F. Bacon, Perry Cheng, and V.T. Rajan IBM T.J. Watson Research Center.
Runtime The optimized program is ready to run … What sorts of facilities are available at runtime.
2/4/20161 GC16/3011 Functional Programming Lecture 20 Garbage Collection Techniques.
® July 21, 2004GC Summer School1 Cycles to Recycle: Copy GC Without Stopping the World The Sapphire Collector Richard L. Hudson J. Eliot B. Moss Originally.
The Metronome Washington University in St. Louis Tobias Mann October 2003.
CS412/413 Introduction to Compilers and Translators April 21, 1999 Lecture 30: Garbage collection.
Simple Generational GC Andrew W. Appel (Practice and Experience, February 1989) Rudy Kaplan Depena CS 395T: Memory Management February 9, 2009.
Runtime Environments Chapter 7. Support of Execution  Activation Tree  Control Stack  Scope  Binding of Names –Data object (values in storage) –Environment.
Eliminating External Fragmentation in a Non-Moving Garbage Collector for Java Author: Fridtjof Siebert, CASES 2000 Michael Sallas Object-Oriented Languages.
Rifat Shahriyar Stephen M. Blackburn Australian National University
David F. Bacon, Perry Cheng, and V.T. Rajan
Memory Management and Garbage Collection Hal Perkins Autumn 2011
Strategies for automatic memory management
Memory Management Kathryn McKinley.
Closure Representations in Higher-Order Programming Languages
Chapter 12 Memory Management
Mooly Sagiv html:// Garbage Collection Mooly Sagiv html://
Presentation transcript:

UniProcessor Garbage Collection Techniques Paul R. Wilson University of Texas Presented By Naomi Sapir Tel-Aviv University

Overall Goal Introduction of garbage collectors for uniprocessors. Introduction of garbage collectors for uniprocessors. Clarify basic issues in the field. Clarify basic issues in the field.

Motivation Modular programming. Modular programming. Unreclaimed memory leads to slow memory leaks. Unreclaimed memory leads to slow memory leaks. Reclaiming too soon may cause unpredictable results. Reclaiming too soon may cause unpredictable results. GC should be built into a language implementation. GC should be built into a language implementation.

Two Phase Abstraction Distinguish live objects from garbage by terms of root set. Distinguish live objects from garbage by terms of root set. - reference counting - mark sweep - copying Reclaim Garbage storage. Reclaim Garbage storage.

Root Set Global variables Global variables local variables in the activation stack. local variables in the activation stack. Registers Registers Live object: Any object reached from the Root Set. What is Garbage?

Reference Counting

Unreclaimable Cycle

Cons Conservative approximation of true liveness. Conservative approximation of true liveness. Efficiency cost proportional to the number of objects allocated in runtime. Efficiency cost proportional to the number of objects allocated in runtime. - a real pointer points to another object - short lived stack variables Fragmentation. Fragmentation.

Pros Used in distributed systems combined with other techniques. Used in distributed systems combined with other techniques.

Mark-Sweep Collection

Root Page Object Mark-swept

Cons Fragmentation - difficult to allocate large objects. Fragmentation - difficult to allocate large objects. Locality of reference: interleave of different ages causes many page swaps. Locality of reference: interleave of different ages causes many page swaps. Cost: proportional to the heap size. Cost: proportional to the heap size.

Mark Compact Collection Compact after mark Pros Solves fragmentation. Solves fragmentation. Saves locality. Saves locality.Cons Cost: Several passes over the data: Cost: Several passes over the data: Mark, compute new locations, update pointers and move the objects.

Copying Garbage Collection

Before garbage collection

After garbage collection

Cheney breath-first copying

Efficiency of Copying Collection Proportional to the live data during collection. Proportional to the live data during collection. Decrease of collection frequency, decreases collection effort. Decrease of collection frequency, decreases collection effort. Need increased heap memory. Need increased heap memory. Objects that die before GC needn’t be copied. Objects that die before GC needn’t be copied.

Basic Techniques - Conclusions High performance systems use hybrid techniques. High performance systems use hybrid techniques. Copy collectors use a separate large objects area. Copy collectors use a separate large objects area. In-place collectors (mark-sweep, treadmill) are conservative in respect to untyped objects, a copying collector must identify pointers. In-place collectors (mark-sweep, treadmill) are conservative in respect to untyped objects, a copying collector must identify pointers.

Problems with basic GC Not large memory, causes excessive paging. Not large memory, causes excessive paging. A copying collection might cause paging. A copying collection might cause paging. Locality in cache memory is important. Locality in cache memory is important. Time consuming, not usable for real time applications. Time consuming, not usable for real time applications.

Incremental Tracing Collectors

Incremental tracing for garbage detection. Incremental tracing for garbage detection. The running program may mutate the graph of reachable objects. The running program may mutate the graph of reachable objects. - keep track of changes. - keep track of changes. - floating garbage. - floating garbage.

Tricolor Marking Before After a violation D is not reachable

Incremental Approaches Coordinates the collector with the mutator. Coordinates the collector with the mutator. Read barrier Read barrier A mutator access a pointer to a white object, colors the object grey. Write barrier - a direct method Write barrier - a direct method - Traps the write of a white pointer into a black object. - Traps the death of a pointer before it is reached by GC.

Baker’s Incremental Copying The best known real-time garbage collector. The best known real-time garbage collector. Free list(tospace), Live list (fromspace). Free list(tospace), Live list (fromspace). Object: two pointers (next,prev) and a color (for the set). Object: two pointers (next,prev) and a color (for the set). Fast allocation: copying in Cheney fashion. Fast allocation: copying in Cheney fashion. Read Barrier. Read Barrier.

Baker’s Incremental Copying (cont’) Tricolors: Tricolors: - Black: Scanned area in tospace - Grey: copied but not scanned. - White: unreached objects in fromspace. Use scan-pointer on unscanned area of tospace, and move referred-to objects from fromspace.

Baker’s Incremental Copying (cont’) Rule: Scanned objects in tospace(black) cannot point to objects in fromspace(white). Rule: Scanned objects in tospace(black) cannot point to objects in fromspace(white). If a mutator tries to access a pointer from the fromspace (white), the referent is copied into the tospace (grey) before the access. If a mutator tries to access a pointer from the fromspace (white), the referent is copied into the tospace (grey) before the access. Allocation of new objects during GC is done in tospace, they are live - black. Allocation of new objects during GC is done in tospace, they are live - black.

Baker’s Incremental Copying implementation Rate of copy is tied to the rate of runtime allocation. Rate of copy is tied to the rate of runtime allocation. Read barrier: compiled in software or Read barrier: compiled in software or implemented by hardware checks and/or microcode routines (Lisp Machines) Order of 20% time overheads. Order of 20% time overheads.

The Treadmill (Baker) Non-copying. Non-copying. Doubly linked lists. Doubly linked lists.

The Treadmill (cont’) During allocation

The Treadmill Conservatism Allocated objects are marked live, but might die before the collection finishes. Allocated objects are marked live, but might die before the collection finishes. Pre-existing object marked live, might die after being reached. Pre-existing object marked live, might die after being reached. If the mutator destroys all the grey objects that point to a white object, although the white object will not be reachable by the collector, its memory will be reclaimed.

Snapshot-at-Beginning Write-Barrier (Yuasa) Cheaper then read barrier, as heap writes are less common then heap reads. Cheaper then read barrier, as heap writes are less common then heap reads. The graph of reachable objects is fixed from the beginning. The graph of reachable objects is fixed from the beginning. All objects are accessed by the GC during collection (saves overwritten values). All objects are accessed by the GC during collection (saves overwritten values). more conservative then Baker,all pointers retained, no free during GC. more conservative then Baker,all pointers retained, no free during GC.

Tricolor Marking Before D is reachable

Incremental Update Write-Barrier(Dijkstra) Heuristically retain live objects at the end of GC. Heuristically retain live objects at the end of GC. Objects that die during GC and before reached by GC, may be reclaimed. Objects that die during GC and before reached by GC, may be reclaimed. Records a pointer that escapes into an already reached object (black  white)  (grey  white) Records a pointer that escapes into an already reached object (black  white)  (grey  white)

Incremental Update Write-Barrier(Dijkstra) cont’ New objects are allocated white: short lived objects will not be traversed early, but will be reclaimed quickly (advantage). New objects are allocated white: short lived objects will not be traversed early, but will be reclaimed quickly (advantage).

Comparison of Incremental GCs

Generational Garbage Collection (copying)

Before GC

After GC

Generational Garbage Collection New objects are allocated in the New Gen. New objects are allocated in the New Gen. When full, New Gen only is scavenged, then old objects are copied to the Old Gen. When full, New Gen only is scavenged, then old objects are copied to the Old Gen. Include a pointer Old Gen  New Gen in the Root Set. Include a pointer Old Gen  New Gen in the Root Set. Does not copy all live data at a collection. Does not copy old objects repeatedly.

Generational Garbage Collection Cont’ Copy Collector: all pointers to moved objects are updated. Copy Collector: all pointers to moved objects are updated. Conservative true liveness, not all pointers Old Gen  New Gen are live, they will float until the Old Gen will be scavenged. Conservative true liveness, not all pointers Old Gen  New Gen are live, they will float until the Old Gen will be scavenged.

Generational Garbage Collection Cont’ Newer generations are usually smaller then older, so scanning them is faster. Newer generations are usually smaller then older, so scanning them is faster. Better locality. Better locality. Record of intergenerational pointers is not tied to the rate of object creation, but still might slow the program. Record of intergenerational pointers is not tied to the rate of object creation, but still might slow the program.

Conclusions Generational techniques reduce cost as objects tend to die fast. Generational techniques reduce cost as objects tend to die fast. Generational techniques with write barrier can support incremental update collection. Generational techniques with write barrier can support incremental update collection. We studied several kinds of GCs. We studied several kinds of GCs. Most important characteristics of GCs. Most important characteristics of GCs. Constant factors of cost (locality effects). Constant factors of cost (locality effects). Understanding current research. Understanding current research.