Reference Counting.

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

Introduction to Memory Management. 2 General Structure of Run-Time Memory.
(Chapter 5) Deleting Objects
Compilation /15a Lecture 13 Compiling Object-Oriented Programs Noam Rinetzky 1.
1 Overview Assignment 5: hints  Garbage collection Assignment 4: solution.
On-the-Fly Garbage Collection Using Sliding Views Erez Petrank Technion – Israel Institute of Technology Joint work with Yossi Levanoni, Hezi Azatchi,
Incorporating Generations into a Modern Reference Counting Garbage Collector Hezi Azatchi Advisor: Erez Petrank.
Lecture 10: Heap Management CS 540 GMU Spring 2009.
Garbage Collection What is garbage and how can we deal with it?
Copying GC and Reference Counting Jonathan Kalechstain Tel Aviv University 11/11/2014.
Garbage Collection  records not reachable  reclaim to allow reuse  performed by runtime system (support programs linked with the compiled code) (support.
An On-the-Fly Mark and Sweep Garbage Collector Based on Sliding Views Hezi Azatchi - IBM Yossi Levanoni - Microsoft Harel Paz – Technion Erez Petrank –
Efficient Concurrent Mark-Sweep Cycle Collection Daniel Frampton, Stephen Blackburn, Luke Quinane and John Zigman (Pending submission) Presented by Jose.
CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 18.
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
Mark and Sweep Algorithm Reference Counting Memory Related PitFalls
CS 536 Spring Automatic Memory Management Lecture 24.
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.
Using Prefetching to Improve Reference-Counting Garbage Collectors Harel Paz IBM Haifa Research Lab Erez Petrank Microsoft Research and Technion.
1 The Compressor: Concurrent, Incremental and Parallel Compaction. Haim Kermany and Erez Petrank Technion – Israel Institute of Technology.
An On-the-Fly Reference Counting Garbage Collector for Java Erez Petrank Technion – Israel Institute of Technology Joint work with Yossi Levanoni – Microsoft.
Memory Allocation. Three kinds of memory Fixed memory Stack memory Heap memory.
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.
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.
Damien Doligez Georges Gonthier POPL 1994 Presented by Eran Yahav Portable, Unobtrusive Garbage Collection for Multiprocessor Systems.
Uniprocessor Garbage Collection Techniques Paul R. Wilson.
Reference Counters Associate a counter with each heap item Whenever a heap item is created, such as by a new or malloc instruction, initialize the counter.
Compiler Optimizations for Nondeferred Reference-Counting Garbage Collection Pramod G. Joisha Microsoft Research, Redmond.
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.
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.
Taking Off The Gloves With Reference Counting Immix
Chapter 7 Run-Time Environments
Ulterior Reference Counting: Fast Garbage Collection without a Long Wait Author: Stephen M Blackburn Kathryn S McKinley Presenter: Jun Tao.
Runtime Environments. Support of Execution  Activation Tree  Control Stack  Scope  Binding of Names –Data object (values in storage) –Environment.
Fast Garbage Collection without a Long Wait Steve Blackburn – Kathryn McKinley Presented by: Na Meng Ulterior Reference Counting:
Garbage Collection and Memory Management CS 480/680 – Comparative Languages.
UniProcessor Garbage Collection Techniques Paul R. Wilson University of Texas Presented By Naomi Sapir Tel-Aviv University.
University of Washington Wouldn’t it be nice… If we never had to free memory? Do you free objects in Java? 1.
More Distributed Garbage Collection DC4 Reference Listing Distributed Mark and Sweep Tracing in Groups.
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.
CS412/413 Introduction to Compilers and Translators April 21, 1999 Lecture 30: Garbage collection.
Reference Counting. Reference Counting vs. Tracing Advantages ✔ Immediate ✔ Object-local ✔ Overhead distributed ✔ Very simple Trivial implementation for.
An Efficient, Incremental, Automatic Garbage Collector P. Deutsch and D. Bobrow Ivan JibajaCS 395T.
Runtime Environments Chapter 7. Support of Execution  Activation Tree  Control Stack  Scope  Binding of Names –Data object (values in storage) –Environment.
1 Compiler Construction (CS-636) Muhammad Bilal Bashir UIIT, Rawalpindi.
Garbage Collection What is garbage and how can we deal with it?
Data Structure Interview Question and Answers
Smalltalk Implementation: Memory Management and Garbage Collection
Dynamic Memory Allocation
Rifat Shahriyar Stephen M. Blackburn Australian National University
Concepts of programming languages
Storage.
Cycle Tracing Chapter 4, pages , From: "Garbage Collection and the Case for High-level Low-level Programming," Daniel Frampton, Doctoral Dissertation,
Ulterior Reference Counting Fast GC Without The Wait
Smart Pointers.
Strategies for automatic memory management
Memory Management Kathryn McKinley.
Created By: Asst. Prof. Ashish Shah, J.M.Patel College, Goregoan West
CS703 - Advanced Operating Systems
Automating Memory Management
Garbage Collection What is garbage and how can we deal with it?
Mooly Sagiv html:// Garbage Collection Mooly Sagiv html://
Reference Counting vs. Tracing
Presentation transcript:

Reference Counting

Reference Counting vs. Tracing Advantages Immediate Object-local Overhead distributed Very simple Trivial implementation for naïve RC Disadvantages Maintain count Time and space overheads Cycles Can’t be collected Complex High performance implementation about as complex as tracing

Garbage collection is ubiquitous Two ideas underpin large literature: Tracing [McCarthy60] Reference Counting [Collins60] However Tracing used in all high performance GCs Reference counting only in non-performance critical settings Reference counting is used in non-performance critical systems like PHP, Perl and Python

Reference counting [Collins 1960] Associate a reference count field with each object how many pointers reference this object When nothing points to an object, it can be deleted Decrement count for all descendants of dead objects

Basic Reference Counting 1 B 1 C 1 D 1 2 E E 1 2 3 F 1 A set of objects and references. Objects with their reference count. Reference update – inc of new and dec of old Reference delete – dec of old and if zero then collect Reference delete – dec of old, two objects only pointing to each other, circular references

Write Barriers Small piece of code Used to intercept pointer writes Generated by the compiler

Cycles? [Harold-McBeth 1963] Reference counting algorithm does not reclaim cycles! But, it turns out that “typical” programs do not use too many cyclic structures This is correct also for modern benchmarks (including SPECjbb2000) So, other methods are used “seldom” to collect the cycles

Lazy Freeing [Weizenbaum, 1963] Problem: uneven processing overheads. Cost of deleting last pointer to an object O depends on size of sub-graph rooted at O Solution: lazy freeing Free lazily with a stack When last pointer to O deleted: push O to stack During allocation: pop O from stack, free O, decrement rc for children of O If any got down to 0 – push it to the stack

Lazy Freeing Properties Advantage Splitting the costs of deletion evenly throughout the computation Efficiency (almost) unchanged: deletion is just spread into many allocation operations Disadvantages: Complication of the allocation process It may take time to realize that a large consecutive space has been freed

Sticky reference counts Problem: Space overhead for ref counters Theoretically, large enough to hold number of pointers in the heap Idea: use small rc fields (may overflow) When rc overflows, think of it as stuck Stuck rc’s are not decremented/incremented To reclaim objects with stuck rc, their rc values must be restored

Sticky reference counts

Restoring reference counts Auxiliary data structures to store count of the overflowed objects Hash Table can be used Cycle collector Ignore them (let backup tracing collect stuck objects) Restore them (let backup tracing restore stuck counts)

Deferred Reference Counting Problem: overhead on updating changes to stacks and registers is too high Solution [Deutch & Bobrow, 1976] Don’t update rc for stacks and registers rc’s reflect only references from heap objects not from stack We can’t delete objects whose rc drops to zero Instead objects with rc = 0 are pushed to ZCT (Zero Count Table) “Once in a while”: collect all objects with rc=0 that are not referenced from stacks and registers

Deferred RC Properties Advantages: Deferred RC reduces overhead by 80%. Disadvantages: Immediacy of collection lost ! Space overhead for ZCT. Used in most modern RC systems

Deferral [Deutsch and Bobrow 1976, Bacon et al. 2001] Stacks & Registers A 1 2 1 B 1 C 1 D 1 2 E 2 F 2 1 ++ -- --' Bottom of left hand side IncBuffer DecBuffer D++ A-- A-- F-- A-- F-- GC: move deferred decs GC: apply decrements GC: apply increments mutator activity GC: scan roots GC: collect A++ F++ B--

Coalescing [Levanoni and Patrank 2001] F++ B-- C-- D-- E-- A B C D E F When it is first changed remember Remember A Ignore intermediate mutations Compare A, Aold B--, F++

Cycles in Reference Counting Systems Reference counting collectors employ one of 2 avenues to collect garbage cycles: A backup tracing collector Trace all live objects and sweep the entire heap Can also restore reference counts A cycle collector Known as trial deletion

Cycle Collection Basic Idea - 1 Observation 1: Garbage cycles can only be created when a rc is decremented to a non-zero value Objects whose rc is decremented to a non-zero value become candidates

Cycle Collection Basic Idea - 2 Sub-graph of O graph of objects reachable from O External pointer (to a sub-graph) a pointer from a non sub-graph object to a sub-graph object Internal pointer (of a sub-graph) a pointer between 2 sub-graph objects o o1 o2 o4 o5 a o3

Cycle Collection Basic Idea - 2 Observation 2: In a garbage cycle all the reference counts are due to internal pointer of the cycle For each candidate’s sub-graph, check if external pointers point to this sub-graph

Counts for External Pointers Only 1 r 2 a b c d 1 r a b c 2 d edge r->a deleted 1 r a b c d rc’s when ignoring internal edges a garbage cycle Not a garbage cycle

Implementing the Cycle Collector Idea Object is colored black/gray/ white. Whenever rc of an object ‘a’ is decremented to a non-zero, perform local traversals over the graph of objects of ‘a’. Mark: Updates rc’s to reflect only pointers that are external to the graph of ‘a’, marking nodes in gray Scan: Restores rc’s of the externally reachable objects, coloring them in black. Rest of the nodes are white. Collect: collects garbage objects (the white ones). 1 r 2 a b c d 1 1 1 1 1 2 1