• Non ci sono risultati.

Uniprocessor Garbage Collection Techniques

N/A
N/A
Protected

Academic year: 2021

Condividi "Uniprocessor Garbage Collection Techniques"

Copied!
44
0
0

Testo completo

(1)

Uniprocessor Garbage Collection Techniques

Paul R. Wilson

(2)

FromSapce/Tospace before

(3)

FromSpace/ToSpace after

(4)

Cheney Breadth-first copying

(5)

3mb vs. 6mb

(6)
(7)

The Two-Phase Abstraction

1. Detection

2. Reclamation

(8)

Why Garbage Collect at All?

Safety

Memory leaks

Continued use of freed pointers

Simplicity

(9)

Why Garbage Collect at All?

Flexibility

Hard coded program limits

Efficiency!

Who is responsible for deletion?

Extraneous copies

(10)

Liveness and Garbage

There is a root set which is defined as live.

Anything reachable from a live pointer is also live

Everything else is garbage

(11)

The Root Set

The Root Set

Static global and module variables

Local Variables

Variables on any activation stack(s)

Everyone else

Anything Reachable From a live value

(12)

Reference Counting Advantages

Implicitly distributes garbage collection

Real Time guarantees with deferred reclamation

Keep a list of zeroed objects not yet processed

Memory efficiency, can utilize all available memory with no work room

(13)

Reference Counting Pitfalls

Conservative- needs a separate GC technique to reclaim cycles

Expensive- pointer reassignment requires:

Increment

Decrement

Zero Check

Stack Variables frequent creation/destruction

Can be optimized to some extent

(14)

Reference Counting

(15)

Ref counting, unreclaimable

(16)

Deferred Reference Counting

Defer deletion of zero counted objects

Periodically scan the stack for pointers

(17)

Mark-Sweep Collection

Starting From the root set traverse all pointers via depth/breadth first search.

Free everything that is not marked.

(18)

Non-Copying issues

Same as for traditional allocators

Fragmentation

Memory block size management

Locality of reference- interleaved new/old

General issues- work proportional to

heap size

(19)

Copying Advantages

Memory locality preserved

Disadvantages

Lots of copying!

“Scavenging”

(20)

Stop and Copy

How to update multiple pointers to the same object?

Forwarding Pointers

Mark/Sweep is proportional to the amount of live data. Assuming this stays roughly constant,

increasing memeory will increase efficiency.

(21)

Non Copying Version

Facts

Allocated with a color

Fragmentation

Advantages

Does not require pointer rewriting

Supports obscure pointer formats, C friendly

(22)

In place collection

Conservative estimates

Useful for languages like C

Pointers can be safely passed to foreign libraries not written with Garbage

Collection in mind

(23)

Incremental Tracing Collectors

The ‘Mutator’

The reachability graph may change

From the garbage collectors point of view the actual application is merely a coroutine ir cuncurrent process with an unfortunate tendency to modify data structures that the collector is trying to traverse

Floating Garbage

Can’t survive more than one extra round

(24)

Real Time Garbage Collection

Incremental Tracing Collectors

In Place Collection

Many readers single writer(mutator)

As a Copying Collector

Multiple Readers Multiple Writers

(25)

Tricolor Marking

White

Initial color for an object subject to collection

Black

Objects that will be retained after the current round

Gray

Object has been reached, but not its descendents

Wave front effect

(26)

A violation of the Coloring

Invariant

(27)

Read Barrier

Detects an attempt to read a white

object and immediately colors it gray

(28)

Write Barrier

Traps attempts to write a pointer into

an object

(29)

Some algorithms

Snapshot-at-beginning write barrier

Black-only read barrier

Baker’s read barrier

Dijkstra’s write Barrier

Steele’s write Barrier

(30)

Baker’s Read Barrier

Allocates Black

Grey Objects cannot be reverted to white

Immediately Invalidates fromspace

Any pointer access to fromspace causes the GC to grey the target object by

copying it to tospace if necessary and

updating the pointer.

(31)

Baker’s Non Copying Scheme

Real Time Friendly

(32)

Treadmill

(33)

Black Only Read Barrier

When a white object in fromspace is

touched it is scanned completely.

(34)

Replication Copying Collection

Until copying from from space to to space is completed, the mutator continues to read from from space.

Write updates must be trapped to update tospace.

Single simultaneous ‘flip’ where all pointers are updated.

Expensive for standard hardware, but cheap for functional languages

(35)

Real time considerations

Read Barriers add an unpredictable cost per pointer access

Nilson background scavenger, reserve only

Write barrier may be more expensive overall, but the cost per access is well bounded

Guaranteeing progress allocation clock, frees per allocation

Statically allocate troublesome objects

(36)

Results

Writer barrier more efficient on

standard hardware

(37)

Snapshot at the Beginning

Catches pointers which try to escape from white objects

If a pointer is replace in a black object, the

replaced pointer is first stored. All overwritten pointers are saved via a write barrier.

All objects that are live at the beginning of collection remain live

Allocate Black during collection round

Incremental Update

Reverts black to gray when an object is written to, or else grays they new pointed to object

(38)

Incremental Update with Write- Barrier(Dijkstra)g

Catches pointers that try to hide in black objects

Reverts Black to gray

If the overwritten pointer is not pointed to elsewhere then it is garbage

Allocated white. Newly allocated objects

assumed unreachable

(39)

Motivation for a new Strategy

Most objects are short lived

80% to 90% die within a few million instructions

Objects that don’t die quickly are more likely to live a while

Long lived objects are copied over and over

Excessive Paging in Scanning if the heap must exceed available physical memory

(40)

GENERATIONAL GARBAGE

COLLECTION

(41)

Generational gc before

(42)

Generational gc after

(43)

Gc memory usage

(44)

Variations of generational collection

Intergenerational references

Write barrier

Old to younger

Young to old

Collection

Advancement policies

Advance always

Advance after 2 rounds Counter in the header field?

Advance always? Semispace in the last generation 3 spaces

Bucket brigade

Mark compact in the oldest generation for memory efficiency

Riferimenti

Documenti correlati

Genetic Department, Institute for Maternal and Child Health - IRCCS “Burlo Garofolo”, Trieste, Italy. 4 Pharmacy and Clinical Pharmacology Department,

Section 7 considers a possible solution to account for spatial dependence between Dynamic functional activity of different regions, performing data fusion for the subset of subjects

The goal of the paper is to show that, by revisiting the nature of the physical world in terms of relative properties, it is possible to reveal a mind-object identity that, in

• If the mutator destroys all the grey objects that point to a white object, although the white object will not be reachable by the collector, its memory will be

• The member objects of your new class are typically private, making them inaccessible to the client programmers who are using the class. • This allows you to change those

Lipari (Scuola Superiore Sant’Anna) OOSD September 23, 2010 4 / 37G. Example

protected: only member functions of the same class or of derived classes can access it: other classes or global functions can’t public: every function can access it. class MyClass

protected: only member functions of the same class or of derived classes can access it: other classes or global functions can’t public: every function can access it. class MyClass