1 / 25

Garbage Collection

Garbage Collection. Heap Management Reachability Reference counting garbage collectors. Heap management. Heap is a portion of the memory where the data lives indefinitely Not associated with function activation The allocated memory becomes reusable

Download Presentation

Garbage Collection

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.


Presentation Transcript

  1. Garbage Collection Heap Management Reachability Reference counting garbage collectors

  2. Heap management • Heap is a portion of the memory where • the data lives indefinitely • Not associated with function activation • The allocated memory becomes reusable • When the programmer explicitly frees it • Program execution is over • Memory manager allocates and deallocates space within heap

  3. Features of a good memory manager • Space Efficiency • Program efficiency • Low overhead

  4. Locality in programs • Temporal Locality • A program is said to have temporal locality, if the memory locations it accesses are likely to be accessed within a short time • Spatial Locality • A program is said to have spatial locality, if memory locations close to the location accessed are likely to be accessed within a short period of time • Locality allows us to take advantage of the memory hierarchy

  5. Examples • Spatial locality • Mostly the next instruction in a program • Compiler can place the next basic block in the cache to improve the spatial locality • Temporal locality • A portion of the program which is executed when a condition is mostly true

  6. Memory manager • Allocation • Searches the available chunks of memory • Allocates the chunk according to the requested size • If no such chunk is available, it returns null • Deallocation • Returns the freed memory (freed explicitly by the programmer) • The returned memory is reused

  7. fragmentation • As a result of allocation and deallocation of memory, a large number of small sized chunks are created in the heap memory. • These are called holes • Contiguous holes are merged to form a bigger chunk of memory • Memory manager maintains the information and does the allocation of the appropriate sized chunk to the user object.

  8. Allocation policies • First fit • Takes less time • Less efficient • Best fit • Efficiently utilized the available chunks • Binning is used to maintain information about the sizes of the chunks • Leaves the smallest sized hole

  9. Managing free space • Free adjacent chunks are merged to form a larger chunk • A simple allocation deallocation scheme is to keep a bit map, with one bit for each chunk in the bin (1: occupied, 0 free) • Data structures to support merging of adjacent free chunks • Boundary tags • A doubly linked list, Embedded Free list

  10. Boundary tag 0 200 200 0 0 100 100 0 1 120 120 1 0 50 50 0 Chunk A Chunk B Chunk C Chunk D • Contiguous free chunks can be merged to form a larger chunk • If any occupied chunk is freed, then we can merge with one of its free neighbors • Automatic garbage collection can eliminate fragmentation altogether if it moves all the allocated objects to contiguous storage

  11. Manual Deallocation Requests • C and C++ allow manual memory deallocation of data • User is assumed to be utilizing the memory efficiently by knowing the need of the data object in future.(difficult to predict !!!) • Any data that is not needed can be freed by the user explicitly

  12. Problems caused by manual memory management • Manual memory management is error prone. • The two frequent errors are • Dangling pointer dereference error • Memory leak error • Automatic garbage collection gets rid of memory leaks by deallocating all the garbage

  13. Dangling pointer: associated problems • May refer to a location that has been deallocated and available for reallocation • If reallocated to a new variable, the same pointer reference may access a value that is not meant for it • The same pointer may even update the value arbitrarily.

  14. Garbage collection • The data that cannot be referenced is generally known as garbage. • Garbage collection is the reclamation of the chunks of storage holding objects that can no longer be accessed by a program • The type of the objects known at run time helps the garbage collector free the appropriate sized space in the heap.

  15. Mutator • A user program is referred to as the mutator. • Mutator modifies the collection of objects by acquiring space from the memory manager. • The mutator may introduce and drop references to the objects • Objects become garbage when the mutator program cannot “reach” them.

  16. Basic operations by a mutator that changes the set of reachable objects • Object allocation • Memory manager returns the reference to each newly allocated chunk of memory • Adds new members to the set of reachable objects • Parameter Passing and Return Values • References of objects are passed and returned • Objects pointed to by these references remain reachable

  17. Basic operations by a mutator that changes the set of reachable objects • Reference Assignments • Assignments of the form p=q has two effects • First: the original reference in p is lost • If this object had the reference to the next object, the reference to it is also lost (all others whose references are contained within this object are also lost) • Second: p references the object pointed to by q • Procedure Returns • If the activation frame holds any reference, then it is lost when the procedure activation is over

  18. Reachability • The transitions are traced as the reachable objects turn unreachable OR • Periodically locate all the reachable objects and then infer that all the other objects are unreachable

  19. Reference Counting • A count of the references to an object is maintained • When the count goes to zero, the object becomes unreachable

  20. Maintaining return counts(RC) • Object Allocation: RC of new object is set to 1 • Parameter Passing: RC of each object passed to the the procedure is incremented by 1 • Reference Assignments: for u=v, (u,v being the refs.) the RC of the object referred by v goes up by 1, and the count for the old object referred to by u goes down by 1.

  21. Maintaining return counts(RC) • Procedure returns: when a procedure exits, • the references held by all local variables should be decremented by 1 • If multiple variables hold references of the same object, then the objects count must be decremented once for each such reference • Transitive Loss of Reachability • When the reference count of an object becomes zero, the count of each object pointed to by a reference within that object Give Examples…. Give Examples….

  22. Disadvantages of Reference Counting • Cannot collect unreachable, cyclic data structures • Overhead of RC is high because additional operations are introduced with each reference assignment • This overhead is proportional to the amount of computation in the program and not to just to the number of objects referred

  23. Advantage • Garbage collection is performed in an incremental fashion

  24. Class assignment What happens to the reference counts of the objects? F When Pointer from A to B is deleted A B C When Pointer from B to F is deleted E D

  25. Reading Assignment • Mark and Sweep Garbage collection

More Related