51

Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

Pr�ugikoristus

"Reference-counting" pr�ugikoristus

"Mark-sweep" ja "mark-compact" pr�ugikoristus

"Copying" pr�ugikoristus

P~olvkonniti pr�ugikoristus

Page 2: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

Pr�ugikoristus

Pr�ugikoristus (garbage collection) vabastab automaatselt kuh-jaobjektid, mida programm ei saa enam kasutada.

Koosneb kahest osast:

{ elusate objektide ja pr�ugi eristamisest (garbage detec-tion);

{ pr�ugi vabastamisest (garbage reclamation).

Elusus (liveness) on globaalne semantiline omadus, mida

�uldjuhul pole v~oimalik t�apselt kindlaks m�a�arata.

Pr�ugikoristus kasutab ligikaudset kriteeriumit: objekt on elus,kui ta on "juurtest" (root set) l�ahtudes k�attesaadav.

2 / 27

Page 3: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Reference-counting" pr�ugikoristus

"Reference-Counting"

Iga objektiga seotakse loendur, mis n�aitab antud objektileviitavate viitade arvu.

Loenduri muutmine toimub objektile viitadelisamisel/kustutamisel:

{ uue viida lisandumisel loendurit suurendatakse;{ viida kustutamisel loendurit v�ahendatakse.

Kui loendur on null, siis objekt vabastatakse:

{ vabastatud objekt lisatakse vabade objektide listi;{ k~oik viidad, kuhu see objekt viitas, kustutatakse.

3 / 27

Page 4: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Reference-counting" pr�ugikoristus

N�aide:

1 2 1

1 1

1

2

1 1

HEAP SPACE

ROOTSET

4 / 27

Page 5: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Reference-counting" pr�ugikoristus

N�aide:

2 2 1

1 1

1

2

0 1

HEAP SPACE

ROOTSET

4 / 27

Page 6: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Reference-counting" pr�ugikoristus

N�aide:

2 2 1

1 1

1

2

0

HEAP SPACE

ROOTSET

4 / 27

Page 7: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Reference-counting" pr�ugikoristus

N�aide:

2 2 1

1 1

1

1

HEAP SPACE

ROOTSET

4 / 27

Page 8: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Reference-counting" pr�ugikoristus

Eelised

4 on lihtne realiseerida;

4 pr�ugikoristusega seotud toimingud on hajutatud:

{ suhteliselt lihtsalt modi�tseeritav inkrementaalseks;

4 hea viitade lokaalsus:

{ muudetakse ainult l�ahte- ja sihtviitade loendureid;

4 aeg objekti muutumisel pr�ugiks ning tema vabastamisevahel (zombie time) on minimaalne;

4 v~oimaldab lihtsasti realiseerida objektide "�naliseerimist".

5 / 27

Page 9: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Reference-counting" pr�ugikoristus

Puudused

8 suhteliselt ebaefektiivne:

{ peab haldama loendureid isegi, kui pr�ugi ei koristata;

8 m�alu fragmenteerumine:

{ analoogne teiste vabade objektide listil baseeruvateskeemidega;

8 paljude v�aikeste objektide korral v~oib loendurite pealekuluda suhteliselt palju m�alu;

8 rekursiivne vabastamine on halvimal juhul t~okestatudkuhja suurusega;

8 ei suuda vabastada kogu pr�ugi:

{ ts�uklilised andmestruktuurid.

6 / 27

Page 10: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

"Mark-Sweep"

Toimub kahes faasis:

1 l�ahtudes juurtest, m�argendatakse k~oik k�attesaadavad objek-tid;

2 teostatakse kuhja t�aisl�abivaatus ning m�argendamata objek-tid vabastatakse.

void gc () {foreach x 2 Roots do

mark (x);

end;

collect ();

}

7 / 27

Page 11: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

Protseduur mark()

M�argendab etteantud tipu ning seej�arel rekursiivselt k~oikk�attesaadavad tipud.

Rekursioon l~opeb, kui tipp on juba m�argendatud v~oi kuiantud tipp sisaldab ainult baasv�a�artusi.

void mark (ref x) {if (x!mark == 0) {x!mark = 1;

foreach y 2 sons(x) do

mark (y);

end;

}}

8 / 27

Page 12: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

Protseduur collect()

Vaatab l�abi k~oik kuhjaobjektid ning lisab m�argendamataobjektid vabade objektide listi.

void collect () {freelist = NIL;

foreach x 2 objects() do

if (x!mark == 0) {x!next = freelist;

freelist = x;

}else x!mark = 0;

end;

}

9 / 27

Page 13: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

0 0 0 0 0

10 / 27

Page 14: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

1 0 0 0 0

10 / 27

Page 15: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

1 0 1 0 0

10 / 27

Page 16: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

1 0 1 0 1

10 / 27

Page 17: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

1 0 1 0 1

10 / 27

Page 18: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

1 0 1 0 1

10 / 27

Page 19: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

1 0 1 0 1

FL

10 / 27

Page 20: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

0 0 1 0 1

FL

10 / 27

Page 21: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

0 0 1 0 1

FL

10 / 27

Page 22: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

0 0 0 0 1

FL

10 / 27

Page 23: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

0 0 0 0 1

FL

10 / 27

Page 24: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

N�aide:

1 Rekursiivne m�arkimine:

2 Objektide vabastamine:

0 0 0 0 0

FL

10 / 27

Page 25: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-sweep" pr�ugikoristus

Puudused

8 Objektide m�arkimine toimub rekursiivselt.

{ Rekursioonimagasin kasvab halvimal juhul linearseltkuhja suurusega!!

{ V~oimalik lahendus: Deutsch-Schorr-Waite'i "viitadep�o�oramise" (pointer reversal) algoritm.

8 Elusad objektid on kuhjas vabade m�alupiirkondadegasegamini.

{ M�alu fragmenteerumine.{ V~oimalik lahendus: "mark-compact" pr�ugikoristus.

11 / 27

Page 26: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Mark-compact" pr�ugikoristus

"Mark-Compact"

Toimub kolmes faasis:

1 l�ahtudes juurtest, m�argendatakse k~oik k�attesaadavadobjektid (analoogselt "mark-sweep" pr�ugikoristusega);

2 teostatakse kuhja t�aisl�abivaatus ning arvutataksem�argendatud objektide uued aadressid;

3 nihutatakse m�argendatud objektide uude asukohta ningviitadele antakse uued v�a�artused.

4 Pr�ugikoristuse tulemusena paikneb kogu vaba m�alukompaktselt kuhja l~opus.

8 On suhteliselt aeglane, kuna kuhjaobjekte tuleb l�abidapalju kordi.

12 / 27

Page 27: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

"Copying"

Kuhi jagatud kaheks v~ordseks alampiirkonnaks: FromSpaceja ToSpace.

FromSpace on aktiivselt kasutatav m�alupiirkond, kuhusalvestatakse uued objektid.

Kui FromSpace saab t�ais, siis teostatakse pr�ugikoristus:

{ elusad objektid kopeeritakse FromSpace'ist ToSpace'i;{ FromSpace ja ToSpace vahetavad rollid (so. endineToSpace muutub FromSpace'iks ja vastupidi).

13 / 27

Page 28: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE TOSPACEROOTSET

14 / 27

Page 29: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE TOSPACEROOTSET

14 / 27

Page 30: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

TOSPACE FROMSPACEROOTSET

14 / 27

Page 31: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

Cheney algoritm

Toimub kahes (�uksteisega vahelduvas) faasis:

esimese faasis (evacuate) kopeeritakse vahetultk�attesaadavad objektid FromSpace'ist ToSpace'i, kasutatudviidad asendatakse viitadega vastavatele uutele objektide-le ning vanade objektide asemele installeeritakse "edasi

toimetamise" viidad (forwarding pointers);

teises faasis (scavenge) skaneeritakse ToSpace'i kopeeritudobjektid lineaarselt l�abi ning k~oik FromSpace'ist vahetultk�attesaadavad objektid evakueeritakse ToSpace'i; kui eva-kueeritav objekt on juba varem kopeeritud, siis objektiuuesti ei kopeerita, vaid asendatatakse j�argitav viit selle"edasi toimetamise" viidaga;

protsess l~opeb, kui skaneerimisviit j~ouab j�arele kuhjat�aitumisviidale.

15 / 27

Page 32: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE

TOSPACE

ROOT SET

A B

C

D E

F

G

FreeScan

16 / 27

Page 33: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE

TOSPACE

ROOT SET

A B

C

D E

F

G

A B

FreeScan

16 / 27

Page 34: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE

TOSPACE

ROOT SET

A B

C

D E

F

G

A B C

FreeScan

16 / 27

Page 35: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE

TOSPACE

ROOT SET

A B

C

D E

F

G

A B C D

FreeScan

16 / 27

Page 36: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE

TOSPACE

ROOT SET

A B

C

D E

F

G

A B C D E

FreeScan

16 / 27

Page 37: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE

TOSPACE

ROOT SET

A B

C

D E

F

G

A B C D E F

FreeScan

16 / 27

Page 38: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE

TOSPACE

ROOT SET

A B

C

D E

F

G

A B C D E F G

FreeScan

16 / 27

Page 39: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE

TOSPACE

ROOT SET

A B

C

D E

F

G

A B C D E F G

FreeScan

16 / 27

Page 40: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

FROMSPACE

TOSPACE

ROOT SET

A B

C

D E

F

G

A B C D E F G

FreeScan

16 / 27

Page 41: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

Eelised

4 kogu vaba m�alu on kompaktselt koos;

4 suvalise suurusega uute objektide loomine on v�aga odav:

{ m�alu reserveerimine on kuhja t�aitumisviidasuurendamine;

{ kuhja t�aitumise kontroll on kahe viida v~ordlemine;

4 inspekteeritakse ainult elusaid objekte:

{ enamus objekte on reeglina suhteliselt l�uhikese elueaga;{ elusaid objekte on seet~ottu tavaliselt tunduvalt v�ahemkui pr�ugi;

4 teoreetiline amortiseeritud efektiivsus v�aga hea:

{ kuhja suuruse kasvades l�ahenevad kopeerimiskuludnullile!

17 / 27

Page 42: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

"Copying" pr�ugikoristus

Puudused

8 pool m�alust on "kasutu";

8 kogu t�o�o on kontsentreeritud pr�ugikoristuse ajale:

{ v~oib tekitada h�airivaid pause;

8 laiuti l�abivaatus v~oib segamini l�u�ua lokaalsusmustrid;

8 k~oik viidad t~ostetakse ringi:

{ v~oib rikkuda m~ond invarianti, mida programm eeldab;

8 pika elueaga objekte kopeeritakse igal pr�ugikorstusel �uhauuesti:

{ v~oib suurte "veteranobjektide" korral osutuda k�ullaltkikulukaks.

18 / 27

Page 43: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

P~olvkonniti pr�ugikoristus

Empiirilisi t�ahelepanekuid

Vasts�undinute suremus (infant mortality) { enamik objektesureb v�aga noorelt.Reeglina 80-90% objekte sureb enne j�argmise megabaidikasutamist:

{ 60-90% CL ja 75-95% Haskelli objektidest surevad ennesaamist 10 kb vanaks.

{ SML/NJ vabastab 98% objektidest iga pr�ugikoristusej�arel.

{ 95% Java objektidest on "l�uhiealised".

Mida vanem on objekt, seda t~oen�aolisemalt elab ta �ulej�argmise pr�ugikoristuse.

Viitade suunatus (directionality of reference) { nooremadobjektid reeglina viitavad vanematele.

19 / 27

Page 44: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

P~olvkonniti pr�ugikoristus

P~olvkonniti pr�ugikoristus

M�alu on seal paiknevate objektid vanuse j�argi jaotatudp~olvkondadeks (generations).

P~olvkondade koguarv ja suurus on reeglina eelnevalt�kseeritud.

Uued objektid (infants) lisatakse noorimasse,"vasts�undinute" (nursery), p~olvkonda.

Objekti vananedes (tenure) edutatakse ta j�argmissep~olvkonda.

Erinevates p~olvkondades toimub pr�ugikoristus erinevasagedusega

{ p~ohit�ahelepanu p�o�oratakse noorimale p~olvkonnale.

20 / 27

Page 45: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

P~olvkonniti pr�ugikoristus

M�alu jaotus p~olvkondadeks

Generation 1 (youngest)

Generation 2

Generation n (oldest)

...

Live object

Dead object

21 / 27

Page 46: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

P~olvkonniti pr�ugikoristus

Meelespead

Lisaks "tavalistele" juurtele, on antud p~olvkonna juurtekska viidad teistest p~olvkondadest temasse.

Nende juurte asukoht pole staatiliselt kindlaksm�a�aratav.

Pr�ugikoristuse aegne juurte otsimine teistest p~olvkondadeston v�aga kulukas.

Seet~ottu seotakse iga p~olvkonnaga meelespea (rememberedset), mis sisaldab teistest p~olvkondadest tulenevaid viitu

{ kui mingi viit on �uhest p~olvkonnast teise, siis lisatakse tavastava sihtp~olvkonna meelespeasse.

22 / 27

Page 47: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

P~olvkonniti pr�ugikoristus

Meelespead

Viidad vanemast p~olvkonnast nooremasse on nooremap~olvkonna juurteks:

{ selliseid viitasid esineb suhteliselt harva;{ nad tekivad vanas objektis viida destruktiivselmuutmisel;

{ selliseid omistamisi saab kindlaks teha kasutadeskirjutust~okkeid (write barrier).

Viidad nooremast p~olvkonnast vanemasse on sagedased:

{ pole probleemiks, kui vanema p~olvkonna pr�ugikoristuselalati koristatakse ka noorem p~olvkond.

23 / 27

Page 48: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

P~olvkonniti pr�ugikoristus

�Uhesuunalised meelespead

Root set

Younggeneration

Rememberedset

Oldgeneration

24 / 27

Page 49: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

P~olvkonniti pr�ugikoristus

P~olvkonniti pr�ugikoristus

Tihti kasutatakse ainult kahte p~olvkonda, kus nooremp~olvkond on vanemast p~olvkonnast v�aiksema suurusega.

Reeglina toimub ainult pisikoristus (minor collection), kus:

{ eemaldatakse pr�ugi ainult nooremast p~olvkonnast;{ piisavalt vanad objektid edutatakse vanemassep~olvkonda.

Vanema p~olvkonna t�aitumisel teostatakse suurpuhastus(major collection); so. eemaldatakse pr�ugi m~olemastp~olvkonnast.

Pisikoristus ja suurpuhastus v~oivad kasutada erinevaidpr�ugikoristuse skeeme (n�ait. pisikoristuse korral "copying"ning suurpuhastuse korral "mark-compact").

25 / 27

Page 50: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

P~olvkonniti pr�ugikoristus

Probleemid

Pisikoristused ei eemalda vana p~olvkonna pr�ugi:

{ eakas pr�ugi (tenured garbage) p~ohjustab ka nende noorteobjektide s�ailimise, millele ta viitab (nepotism).

Kui vana peab objekt olema enne j�argmisse p~olvkondaedutamist?

{ �Uks pisikoristus pole piisav, kuna vahetult eelnevaltloodud objektidel pole olnud aega suremiseks.

{ Tavaliselt loetakse piisavaks kaks pisikoristust.

Kui suur peab olema noorim p~olvkond?

{ Peab �ara mahtuma p~ohim�allu.{ Liiga suur teeb pisikoristuse pausid liiga pikaks.{ Liiga v�aike ei anna noortele objektidele aega suremiseks.

26 / 27

Page 51: Automaadid, keeled, translaatoridViidad nooremast p ~olvkonnast vanemasse on sagedased: {pole probleemiks, kui anemav p ~olvkonna pr ugikoristusel alati koristatakse ak noorem p ~olvkond

P~olvkonniti pr�ugikoristus

P~olvkonniti pr�ugikoristuse eelised

4 V�aga edukas paljude rakenduste korral.

4 L�uhendab pr�ugikoristuse pause interaktiivseteksrakendusteks talutavale tasemele.

4 Heade lokaalsusomadustega.

4 Reeglina v�ahendab pr�ugikoristusele kuluvat koguaega.

P~olvkonniti pr�ugikoristuse puudused

8 Halvimal juhul on lihtsatest meetodidest kulukam.

8 Objektid ei tarvitse surra piisavalt kiiresti.

8 Rakendused v~oivad "takistuda"kirjutust~oketesse.

8 Liiga paljude viitade korral vanadest objektidest noortessev~oi v�aga s�ugava magasini korral v~oib pauside kestuspikeneda.

27 / 27