The Basics Major concerns Explicit memory management Reclaiming - - PowerPoint PPT Presentation

the basics major concerns
SMART_READER_LITE
LIVE PREVIEW

The Basics Major concerns Explicit memory management Reclaiming - - PowerPoint PPT Presentation

The Basics Major concerns Explicit memory management Reclaiming objects at the right time Garbage collection Discriminating live objects from garbage Both Fast allocation Fast reclamation Low fragmentation 2


slide-1
SLIDE 1

The Basics

slide-2
SLIDE 2

Major concerns

 Explicit memory management

 Reclaiming objects at the right time

 Garbage collection

 Discriminating live objects from garbage

 Both

 Fast allocation  Fast reclamation  Low fragmentation

2

slide-3
SLIDE 3

Automated memory management

 Runtime system automatically

 Detects dead objects (garbage detection)  Reclaims dead objects (garbage reclamation)  Garbage collection

 Preserves software development time

 Relieves programmer burden  Less prone to errors

 Utilized by most modern OOP and scripting

languages

 Python, Java, C#, php

3

slide-4
SLIDE 4

Runtime system performs GC

 E.g. Java virtual machine (JVM)

 Software execution engine that executes your Java

programs

 Java interpreter that converts byte code into OS specific

commands

 Handles related tasks

 Memory management (GC implemented in JVM)  Security  Multithreading

4

slide-5
SLIDE 5

Major concerns

 Explicit memory management

 Reclaiming objects at the right time

 Garbage collection

 Discriminating live objects from garbage

 Both

 Fast allocation  Fast reclamation  Low fragmentation

5

slide-6
SLIDE 6

Layout of a program in memory

6

stack heap Uninitialized data (bss) Initialized data Text / code High address Low address Command line args and environment variables Initialized to 0 by exec Read from program file by exec

slide-7
SLIDE 7

Determining object liveness

 Live objects are needed in the computation

 Now or in the future

 Prove that an object is not live (dead) and reclaim its

storage

 Reclaim dead objects soon, after it is last used  How do we estimate liveness in practice?

 Approximate liveness by reachability from outside the

heap

 Unreachable objects are garbage (reclaim storage)  Reachable objects are live and must not be reclaimed

7

slide-8
SLIDE 8

Identifying garbage

8

 reference counting

(reachability)

 An integer is associated

with every object, summing

 Stack references  Heap references

 Objects with reference

count of zero are dead

stack heap 1 2 2 1 1 1

slide-9
SLIDE 9

Problems with reference counting

9

  • Standard problem is that
  • bjects in cycles (and

those touched by such

  • bjects) cannot be

collected (reclaimed)

  • Overhead of counting

can be high

stack heap 1 2 1 1 1 1

slide-10
SLIDE 10

Identifying garbage

 Tracing (reachability)  Trace reachability from root set

 Processor registers  Program stack  Global variables

 Objects traced are reachable  All other objects are unreachable (garbage)

10

slide-11
SLIDE 11

The marking phase

 To find the dead objects, use the process of calculatus

eliminatus

 Find all live objects  All others are dead

11

slide-12
SLIDE 12

The marking phase

12

  • To discover the dead
  • bjects, we

– Find live objects

stack heap

  • Pointers from the stack

to the heap make objects live

slide-13
SLIDE 13

The marking phase

13

  • To discover the dead
  • bjects, we

– Find live objects

  • Pointers from the stack

to the heap make objects live

  • These objects make
  • ther objects live

stack heap

slide-14
SLIDE 14

The sweep phase

14

  • To discover the dead
  • bjects, we

– Find live objects – Sweep all others away as dead

stack heap

slide-15
SLIDE 15

Mark and sweep: Tracing example

15

  • To discover the dead
  • bjects, we

– Find live objects – Sweep all others away as dead – Perhaps compact the heap – Problem: – Mark phase can take unbounded time

stack heap

slide-16
SLIDE 16

Garbage collection design choices

 Stop-the-world  Incrementality  Hybrid  Concurrency  Parallelism

16

slide-17
SLIDE 17

Stop-the-world collectors

 Typically used on uniprocessor systems  Suspend application  Run collector from start to finish  Resume application

17

slide-18
SLIDE 18

Stop-the-world collectors

 Execution costs?

 Pause time  Discovery of live objects (how long does it take?)  Instruction overhead (per instruction)  Delay between object death and collection  Number of collectible objects collected  Overall execution time  Worst-case vs average case performance  frequency

18

slide-19
SLIDE 19

Incremental collection

 Interleave GC with application  Note: for full heap tracing

 Pause time increases with heap size

 Incremental tracing

 Bounded tracing time  Conservative assumption

 All other objects in heap are live

 Remember pointers from objects in heap

 Add such pointers to root set for tracing

19