an incremental approach rcgc defined
play

An incremental approach RCGC Defined Each object has associated - PowerPoint PPT Presentation

An incremental approach RCGC Defined Each object has associated count of references to it Objects reference count When reference to object created Pointer copied from one place to another assignment RC of pointee is


  1. An incremental approach

  2. RCGC Defined  Each object has associated count of references to it  Object’s reference count  When reference to object created  Pointer copied from one place to another  assignment  RC of pointee is incremented  When reference to object is eliminated  RC of object pointed-from is decremented  When RC of object equals zero  Object is reclaimed 2

  3. Reference counting  Requires space overhead to store reference count  Where is this field stored?  Is it visible at the language level?  Requires time overhead to increment/decrement RCs  RCs maintained in real-time  RCGC is incremental  UNIX file system uses reference counting for files and directories 3

  4. Reclaiming objects with RCGC  When an object is reclaimed  Its pointer fields are examined  RC of any object it hold pointers to is decremented  Why?  Reclaiming one object may  Lead to the transitive decrementing of RCs  Lead to reclaiming of other objects  How? 4

  5. Reference counting example Root set Heap space 1 1 2 1 1 1 1 2 1 5

  6. Reference counting example Root set Heap space 1 1 2 1 0 1 1 2 1 6

  7. Reference counting example Root set Heap space 1 1 2 1 0 1 1 1 0 7

  8. Reference counting example Root set Heap space 1 1 2 1 1 1 1 8

  9. RCGC strengths  Incremental nature of operation  Updating RCs interleaved with program execution  Can easily be made completely real-time  Transitive reclamation of large data structures can be deferred  Keep list of freed object s whose RCs have not been processed  Good for interactive applications (good response time  Easy to implement  Can reuse freed storage immediately  Good spatial locality  Access pattern to virtual memory no worse than application 9

  10. Reference counting weaknesses  RC takes up space  A whole machine word  Ability to represent any # of pointers the system can accommodate  RC consumes time  Updating pointer to point to a new object  Check to see that it is not a reference to self  Decrement RC of old pointee , possibly deleting it  Update pointer with address of new pointee  Increment RC of new pointee 10

  11. Reference count weaknesses  One missed RC update can result in dangling pointers or memory leak  Cannot reclaim circular structures 11

  12. Reference counting example Root set Heap space 1 1 2 1 1 1 1 12

  13. Reference counting example Root set Heap space 1 1 1 1 1 1 1 13

  14. Reference counting example Memory leak Root set Heap space 1 1 1 1 1 1 1 14

  15. RCGC algorithm: RC allocation allocate() { newCell = freeList freeList = next(freelist) return newCell } new(){ if (freeList == NULL){ abort “Memory exhausted” } newCell = allocate() RC(newCell) = 1 return newCell } 15

  16. RCGC algorithm: Updating pointers free(N) { update(R, S){ next(N) = freeList RC(S) = RC(S) + 1 freeList = N delete(*R) } *R = S } delete(T){ RC(T) = RC(T) - 1 if RC(T) == 0 for U in children(T) delete(*U) free(T) } 16

  17. An example Reference count n left right R Root left right x S T left right left right 1 1 17

  18. An example R Root left right x S T left right left right 0 2 next 0 freeList 18

  19. An example R Root left right x S left right 0 1 next 0 freeList 19

Recommend


More recommend