DOC PREVIEW
UVA CS 655 - Automatic Memory Management

This preview shows page 1-2-3-4-5 out of 14 pages.

Save
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Automatic Memory Management Storage Allocation Static Allocation Bind names at compile time Pros Fast no run time allocation no indirection Safety memory requirements known in advance Cons Sizes must be known at compile time Data structures can t be dynamically allocated No recursion 1 Storage Allocation Stack Allocation activation records frames push pop on proc entrance exit Implications Recursion is possible Size of local data structures may vary Stack allocated local names can t persist Can only return objects of statically known size Enables function pointers no nesting though Storage Allocation Heap Allocation Alloc and dealloc from a heap in any order Advantages Local data structures can outlive procedure Facilitates varying sized recursive data structures Can return dynamically sized objects Closures function environment 2 Reachability What can a program manipulate directly Globals Locals in registers on stack etc In C random locations Root nodes Live nodes pointer reachability Problems w Manual Allocation Garbage unreachable but not free Dangling references c a Sharing t b Failures Invalid accesses out of memory errors etc 3 Why else would we want AMM Language requirements sharing system does sharing to save space delayed execution Problem requirements Should pop dealloc Sometimes More abstraction easier to understand Manual management is hard Tradeoffs Problem specification hard real time Costs time space Traditionally very slow early 80 s 40 of time in large LISP programs typical 2 20 4 Reference Counting Count the number of references to each node Each mode has a field for the count rc Free nodes rc 0 On referencing rc On dereferencing rc When rc returns to 0 free it Reference Counting Advantages Overhead is distributed Probably won t affect locality of reference Little data is shared most is short lived Disadvantages High overhead on mutator operations rc rc Recursive freeing Can t reclaim cyclic structures Why 5 Cyclic Structures An X2 Y2 Z 1 Cyclic Structures Look for cycle making references 2 invariants active nodes are reachable from root by a chain of strong pointers strong pointers do not form cycles Non termination Reclaiming objects prematurely 6 Mark and Sweep Garbage collection Leave stuff unreachable until a collection Suspend program during a collection Mark nodes reachable from the roots Sweep up the garbage Mark and Sweep root 7 Mark and Sweep mark and sweep for each R in Roots mark R sweep mark N N mark MARKED for each C in N children mark C Mark and Sweep sweep Free List for each Obj in Heap if Obj mark UNMARKED Free List append Obj else Obj mark UNMARKED 8 Mark and Sweep Advantages Cycles are handled naturally No overhead on pointer manipulations Disadvantages Computation halts Potentially long pauses O seconds Locality Fragmentation Copying Collectors scavenging Divide heap into two semi spaces Allocate only into one space at a time On collection copy out live data 9 Copying Collectors root A C 0 B D 1 Fromspace Tospace Copying Collectors root A A C 0 B D Fromspace 1 Tospace 10 Copying Collectors root 0 A A B C Put forwarding adress in nodes in fromspace as we copy them into to space 0 B D 1 Fromspace Tospace Copying Collectors root 0 A A B C 0 B D Fromspace 1 Tospace 11 Copying Collectors root 0 A C 1 D C 0 B D 1 Fromspace Tospace Copying Collectors 0 1 New Tospace New Fromspace 12 Copying Collectors Advantages No fragmentation Only touch cells in use No free list Disadvantages 1 2 your memory is always unused Overhead of copying Copy long lived objects every time Other Algorithms The previous algorithms are na ve Solutions for most problems Incremental Concurrent collection Tricolor marking Black visited Grey mutated or not fully traversed White untouched Generational collection collect newer spaces not older ones 13 Garbage Collection for C C Don t want to recompile code Distinguishing pointers w a bit flag is bad Headers in general are bad Where are the roots What are the stack register conventions Which words are pointers Conservative Collection Roots registers stack static areas Pointer tests Does the address point into the heap Has that heap block been allocated Is the address properly aligned Machine dependent Pointer tests on sparc 30 instructions or so every time to determine if something is a ptr 14


View Full Document

UVA CS 655 - Automatic Memory Management

Download Automatic Memory Management
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Automatic Memory Management and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Automatic Memory Management and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?