Optimizations for Garbage Collection by yurtgc548


									Specialized Reference Counting
Garbage Collection using Data
    Structure Annotations
   By Eric Watkins and Dzin Avots
       for CS 343 Spring 2002
• Improve use of ref counting for C++
• Problem: cycles can’t be freed
  automatically, expensive to determine what
  is unreachable
• Solution: Use user specified data structure
  annotations to improve performance
        Goals & Techniques

• Avoid unnecessary mark & sweeps
  – Acyclic Data Structure Optimizations
• Avoid some memory leaks
  – Reference Removal Invariant Model
Reference Counting using Smart
           Garbage Example #1
• Doubly Linked List
• Everything is strongly connected
• Nothing can be freed until all external refs
  are gone
• How can we recognize this data structure?
     ext ptr      ext ptr
   Abstract Description of Data

• The compiler can’t differentiate these two
  even though they will obviously be
  connected in different ways.
• ADDS can tell us how to customize smart
  pointer usage for certain data structures
Doubly Linked List ADDS
Binary Tree w/ Parents ADDS
             ADDS spec
• Dimensions (1-d, 2-d, etc.)
• Directionality (forward and backward)
• Uniqueness of forward references (DAGs
  vs. lists)
• Cyclicity
     Linked List Optimization
• The entire dimension is strongly connected,
  forwards and backwards

• Summarize with single ref counter for all
  external references to dimension
     Dimensional Independence

• Dimensions X and Y are dependent if one
  traversal along X and another traversal along Y
  may lead to a common node by different paths
          Other ADDS issues
• What about describing relations between different
  acyclic data structures?
• Could avoid marking & sweeping this structure

  Primary & Secondary Pointers
• Primary pointers – if these point to an
  object, then object is still in use
• Secondary pointers – point to object, but
  don’t affect use status
• Memory leak – Primary pointers are all
  removed, but a secondary pointer remains
           Garbage Example #2

                  BugManager        Grid
             Secondary refs            Primary refs

                              Bug   Bug

• Programs can contain complicated, interconnected
  relationships between objects
        Garbage Example #2

               BugManager        Grid
          Secondary refs           Primary ref

                           Bug   Bug

• If the user forgets to remove the secondary
  reference, the Bug won’t be deleted.
  Primary & Secondary Pointers
• User specifies primary & secondary
  pointers in ADDS specification
• Primary & Secondary pointer invariant can
  be expressed as instrumentation predicate in
  3-valued logic
• Generate shape analysis to detect leak
            Plan of Action
• Investigate use of ADDS specs to improve
  refcount performance
• Generate interprocedural shape analysis
  from primary & secondary edge specs
• Look into other improvements from user
             Related Work
• ADDS work: L. Hendren and J. Hummel,
  Abstractions for Recursive Pointer Data
  Structures: Improving the Analysis and
  Transformation of Imperative Programs
• Shape Analysis: M. Sagiv, T. Reps and R.
  Wilhelm, Parametric Shape Analysis via 3-
  Valued Logic

To top