Free-Me: A Static Analysis for Individual Object Reclamation Samuel Z. Guyer Tufts University Kathryn S. McKinley University of Texas at Austin Daniel.

Slides:



Advertisements
Similar presentations
Steve Blackburn Department of Computer Science Australian National University Perry Cheng TJ Watson Research Center IBM Research Kathryn McKinley Department.
Advertisements

Introduction to Memory Management. 2 General Structure of Run-Time Memory.
1 Write Barrier Elision for Concurrent Garbage Collectors Martin T. Vechev Cambridge University David F. Bacon IBM T.J.Watson Research Center.
Lecture 10: Heap Management CS 540 GMU Spring 2009.
Garbage Collection What is garbage and how can we deal with it?
MC 2 : High Performance GC for Memory-Constrained Environments - Narendran Sachindran, J. Eliot B. Moss, Emery D. Berger Sowmiya Chocka Narayanan.
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.
Probabilistic Calling Context Michael D. Bond Kathryn S. McKinley University of Texas at Austin.
Hastings Purify: Fast Detection of Memory Leaks and Access Errors.
MC 2 : High Performance GC for Memory-Constrained Environments N. Sachindran, E. Moss, E. Berger Ivan JibajaCS 395T *Some of the graphs are from presentation.
Heap Shape Scalability Scalable Garbage Collection on Highly Parallel Platforms Kathy Barabash, Erez Petrank Computer Science Department Technion, Israel.
380C Where are we & where we are going – Managed languages Dynamic compilation Inlining Garbage collection What else can you do when you examine the heap.
CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 18.
CPSC 388 – Compiler Design and Construction
CSC321: Programming Languages 11-1 Programming Languages Tucker and Noonan Chapter 11: Memory Management 11.1 The Heap 11.2 Implementation of Dynamic Arrays.
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.
Establishing Local Temporal Heap Safety Properties with Applications to Compile-Time Memory Management Ran Shaham Eran Yahav Elliot Kolodner Mooly Sagiv.
Memory Allocation. Three kinds of memory Fixed memory Stack memory Heap memory.
Connectivity-Based Garbage Collection Presenter Feng Xian Author Martin Hirzel, et.al Published in OOPSLA’2003.
Previous finals up on the web page use them as practice problems look at them early.
Run-Time Storage Organization
Run time vs. Compile time
JVM-1 Introduction to Java Virtual Machine. JVM-2 Outline Java Language, Java Virtual Machine and Java Platform Organization of Java Virtual Machine Garbage.
An Adaptive, Region-based Allocator for Java Feng Qian & Laurie Hendren 2002.
Compile-Time Deallocation of Individual Objects Sigmund Cherem and Radu Rugina International Symposium on Memory Management June, 2006.
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Garbage Collection Without Paging Matthew Hertz, Yi Feng, Emery Berger University.
Run-time Environment and Program Organization
1 Run time vs. Compile time The compiler must generate code to handle issues that arise at run time Representation of various data types Procedure linkage.
Comparison of JVM Phases on Data Cache Performance Shiwen Hu and Lizy K. John Laboratory for Computer Architecture The University of Texas at Austin.
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.
Flexible Reference-Counting-Based Hardware Acceleration for Garbage Collection José A. Joao * Onur Mutlu ‡ Yale N. Patt * * HPS Research Group University.
Taking Off The Gloves With Reference Counting Immix
An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, Sable Research Group School of Computer Science McGill.
Ulterior Reference Counting: Fast Garbage Collection without a Long Wait Author: Stephen M Blackburn Kathryn S McKinley Presenter: Jun Tao.
Lecture 10 : Introduction to Java Virtual Machine
Dynamic Object Sampling for Pretenuring Maria Jump Department of Computer Sciences The University of Texas at Austin Stephen M. Blackburn.
Free-Me: A Static Analysis for Automatic Individual Object Reclamation Samuel Z. Guyer, Kathryn McKinley, Daniel Frampton Presented by: Dimitris Prountzos.
Breadcrumbs: Efficient Context Sensitivity for Dynamic Bug Detection Analyses Michael D. Bond University of Texas at Austin Graham Z. Baker Tufts / MIT.
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 1 Automatic Heap Sizing: Taking Real Memory into Account Ting Yang, Emery Berger,
Finding Your Cronies: Static Analysis for Dynamic Object Colocation Samuel Z. Guyer Kathryn S. McKinley T H E U N I V E R S I T Y O F T E X A S A T A U.
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. C H A P T E R F I V E Memory Management.
September 11, 2003 Beltway: Getting Around GC Gridlock Steve Blackburn, Kathryn McKinley Richard Jones, Eliot Moss Modified by: Weiming Zhao Oct
380C lecture 19 Where are we & where we are going –Managed languages Dynamic compilation Inlining Garbage collection –Opportunity to improve data locality.
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.
UniProcessor Garbage Collection Techniques Paul R. Wilson University of Texas Presented By Naomi Sapir Tel-Aviv University.
ISBN Chapter 6 Data Types Pointer Types Reference Types Memory Management.
1 Garbage Collection Advantage: Improving Program Locality Xianglong Huang (UT) Stephen M Blackburn (ANU), Kathryn S McKinley (UT) J Eliot B Moss (UMass),
University of Washington Wouldn’t it be nice… If we never had to free memory? Do you free objects in Java? 1.
Consider Starting with 160 k of memory do: Starting with 160 k of memory do: Allocate p1 (50 k) Allocate p1 (50 k) Allocate p2 (30 k) Allocate p2 (30 k)
Object-Relative Addressing: Compressed Pointers in 64-bit Java Virtual Machines Kris Venstermans, Lieven Eeckhout, Koen De Bosschere Department of Electronics.
Introduction to Garbage Collection. Garbage Collection It automatically reclaims memory occupied by objects that are no longer in use It frees the programmer.
Pointer and Escape Analysis for Multithreaded Programs Alexandru Salcianu Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology.
1 GC Advantage: Improving Program Locality Xianglong Huang, Zhenlin Wang, Stephen M Blackburn, Kathryn S McKinley, J Eliot B Moss, Perry Cheng.
GC Assertions: Using the Garbage Collector To Check Heap Properties Samuel Z. Guyer Tufts University Edward Aftandilian Tufts University.
1 The Garbage Collection Advantage: Improving Program Locality Xianglong Huang (UT), Stephen M Blackburn (ANU), Kathryn S McKinley (UT) J Eliot B Moss.
Data Types Chapter 6: Data Types Lectures # 13. Topics Chapter 6: Data Types 2 Introduction Primitive Data Types Character String Types Array Types Associative.
Memory Management What if pgm mem > main mem ?. Memory Management What if pgm mem > main mem ? Overlays – program controlled.
Object Lifetime and Pointers
Dynamic Compilation Vijay Janapa Reddi
Compositional Pointer and Escape Analysis for Java Programs
Concepts of programming languages
Jipeng Huang, Michael D. Bond Ohio State University
Strategies for automatic memory management
José A. Joao* Onur Mutlu‡ Yale N. Patt*
Created By: Asst. Prof. Ashish Shah, J.M.Patel College, Goregoan West
Garbage Collection Advantage: Improving Program Locality
Program-level Adaptive Memory Management
Presentation transcript:

Free-Me: A Static Analysis for Individual Object Reclamation Samuel Z. Guyer Tufts University Kathryn S. McKinley University of Texas at Austin Daniel Frampton Australian National University T H E U N I V E R S I T Y O F T E X A S A T A U S T I N

2 Motivation Automatic memory reclamation (GC) No need for explicit “free” Garbage collector reclaims memory Eliminates many programming errors Problem: when do we get memory back? Frequent GCs: Reclaim memory quickly, with high overhead Infrequent GCs: Lower overhead, but lots of garbage in memory

3 Example Notice: String idName is often garbage Memory: void parse(InputStream stream) { while (not_done) { String idName = stream.readToken(); Identifier id = symbolTable.lookup(idName); if (id == null) { id = new Identifier(idName); symbolTable.add(idName, id); } computeOn(id); }} Read a token (new String) Look up in symbol table If not there, create new identifier, add to symbol table Compute on identifier

4 Solution Garbage does not accumulate Memory: void parse(InputStream stream) { while (not_done) { String idName = stream.readToken(); Identifier id = symbolTable.lookup(idName) if (id == null) { id = new Identifier(idName); symbolTable.add(idName, id); } else free (idName); computeOn(id); }} String idName is garbage, free immediately

5 Our approach Adds free() automatically FreeMe compiler pass inserts calls to free() Preserve software engineering benefits Can’t determine lifetimes for all objects Works with the garbage collector Implementation of free() depends on collector Goal: Incremental, “eager” memory reclamation Results: reduce GC load, improve performance Potential: 1.7X performance malloc / free vs GC in tight heaps (Hertz & Berger, OOPSLA 2005)

6 Outline Motivation Analysis Results Related work Conclusions

7 FreeMe Analysis Goal: Determine when an object becomes unreachable Not a whole-program analysis * Idea: pointer analysis + liveness Pointer analysis for reachability Liveness analysis for when Within a method, for allocation site “ p = new A ” where can we place a call to “ free(p) ”? I’ll describe the interprocedural parts later

8 Pointer Analysis Connectivity graph Variables Allocation sites Globals (statics) Analysis algorithm Flow-insensitive, field-insensitive String idName = stream.readToken(); Identifier id = symbolTable.lookup(idName); if (id == null) { id = new Identifier(idName); symbolTable.add(idName, id); } computeOn(id); idName symbolTable readToken String Identifier (global) id

9 Adding liveness Key: idName readToken String Identifier (global) An object is reachable only when all incoming pointers are live From a variable:Live range of the variable From a global:Live from the pointer store onward Live from the pointer store until source object becomes unreachable From other object: Reachability is union of all these live ranges

10 Computed as sets of edges Variables Heap pointers Liveness Analysis String idName = stream.readToken(); id = new Identifier(idName); computeOn(id); if (id == null) Identifier id = symbolTable.lookup(idName); symbolTable.add(idName, id); idName (global) readToken String Identifier

11 Where can we free it? Where object exists -minus- Where reachable String idName = stream.readToken(); id = new Identifier(idName); computeOn(id); if (id == null) Identifier id = symbolTable.lookup(idName); symbolTable.add(idName, id); readToken String Compiler inserts call to free(idName)

12 Interprocedural component Detection of factory methods Return value is a new object Can be freed by the caller Effects of methods called Describes how parameters are connected Compilation strategy: Summaries pre-computed for all methods Free-me only applied to hot methods String idName = stream.readToken(); symbolTable.add(idName, id); Hashtable.add : (0 → 1) (0 → 2)

13 Implementation in JikesRVM FreeMe added to OPT compiler Run-time: depends on collector Mark/sweep Free-list: free() operation Generational mark/sweep Unbump: move nursery “bump pointer” backward Unreserve: reduce copy reserve Very low overhead Run longer without collecting

14 Volume freed – in MB 100% 50% 0% compress 105 jess 263 raytrace 91 mtrt 98 javac 183 jack 271 pseudojbb 180 xalan 8195 antlr bloat fop 103 hsqldb 515 jython 348 pmd 822 ps 523 db 74 SPEC benchmarks DaCapo benchmarks Increasing alloc size

15 Volume freed – in MB 100% 50% 0% compress 105 jess 263 raytrace 91 mtrt 98 javac 183 jack 271 pseudojbb 180 xalan 8195 antlr bloat fop 103 hsqldb 515 jython 348 pmd 822 ps 523 db FreeMe Mean: 32%

16 Compare to stack-like behavior Notice: Stacks and regions won’t work for example idName escapes some of the time Not biased: 35% vs 65% Comparison: restrict placement of free() Object must not escape No conditional free No factory methods Other approaches: Optimistic, dynamic stack allocation [Azul, Corry 06] Scalar replacement

17 Volume freed – in MB 0% compress 105 jess 263 raytrace 91 mtrt 98 javac 183 jack 271 pseudojbb 180 xalan 8195 antlr bloat fop 103 hsqldb 515 jython 348 pmd 822 ps 523 db 74 Stack-like Mean: 20% 100% 50%

18 Mark/sweep – GC time All benchmarks 30% 9%

19 Mark/sweep – time 20% 15% 6% All benchmarks

20 GenMS – time All benchmarks

21 GenMS – GC time Why doesn’t this help? Note: the number of GCs is greatly reduced FreeMe mostly finding short-lived objects All benchmarks Nursery reclaims dead objects for free (cost ~ survivors)

22 Bloat – GC time 12%

23 Related work Compile-time memory management Functional languages [Barth 77, Hughs 92, Mazur 01] Shape analysis [Shaham 03, Cherem 06] Stack allocation [Gay 00, Blanchet 03, Choi 03] Tied to stack frames or other scopes Objects from a site must not escape Region inference [Tofte 96, Hallenberg 02] Cheap reclamation – no scoping constraints Similar all-or-nothing limitation

24 Conclusions FreeMe analysis Finds many objects to free: often 30% - 60% Most are short-lived objects GC + explicit free() Advantage over stack/region allocation: no need to make decision at allocation time Generational collectors Nursery works very well Abandon techniques that replace nursery? Mark-sweep collectors 50% to 200% speedup Works better as memory gets tighter Embedded applications: Compile-ahead Memory constrained Non-moving collectors

25 Thank You