1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de...

61
Garbage Collection Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

Transcript of 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de...

Page 1: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

11

Garbage CollectionGarbage Collection

Rafael Dueire Lins

Departamento de Informática

Universidade Federal de Pernambuco

Page 2: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

22

Gerenciamento EstáticoGerenciamento Estático

Mais simples. Utilizado na versão original de FORTRAN. A cada vez que um procedimento é

chamado utilizam-se as mesmas posições de memória.

Alocação decidida em tempo-de-compilação.

Page 3: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

33

Alocação Estática:Alocação Estática:

Organização da MemóriaOrganização da Memória

Programa Principal

Subrotina A

Subrotina B

Subrotina C

Page 4: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

44

Alocação Estática:Alocação Estática:Chamada a ProcedimentosChamada a Procedimentos

......z = DSucc (3) z = DSucc (3) w = DSucc (2) w = DSucc (2) ......

Programa Principal

Subrotina B

Subrotina C

DSuccDSucc(n)DSucc(n)temp1 = n + ntemp1 = n + nreturn temp1return temp1

Page 5: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

55

Alocação Estática:Alocação Estática:Chamada a ProcedimentosChamada a Procedimentos

......z = z = DSucc(3) DSucc(3) w = DSucc(2) w = DSucc(2) ......

Programa Principal

Subrotina B

Subrotina C

DSuccDSucc(3)DSucc(3)temp1 = 6temp1 = 6return temp1return temp1

Page 6: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

66

Alocação Estática:Alocação Estática:Chamada a ProcedimentosChamada a Procedimentos

......z = 6 z = 6 w = DSucc(2) w = DSucc(2) ......

Programa Principal

Subrotina B

Subrotina C

DSuccDSucc(3)DSucc(3)temp1 = 6temp1 = 6return temp1return temp1

Page 7: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

77

Alocação Estática:Alocação Estática:Chamada a ProcedimentosChamada a Procedimentos

......z = 6 z = 6 w = w = DSucc(2) DSucc(2) ......

Programa Principal

Subrotina B

Subrotina C

DSuccDSucc(2)DSucc(2)temp1 = 4temp1 = 4return temp1return temp1

Page 8: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

88

Alocação Estática:Alocação Estática:Chamada a ProcedimentosChamada a Procedimentos

......z = 6 z = 6 w = 4w = 4 ......

Programa Principal

Subrotina B

Subrotina C

DSuccDSucc(2)DSucc(2)temp1 = 4temp1 = 4return temp1return temp1

Page 9: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

99

Alocação em PilhaAlocação em Pilha

Surgiu com Algol Possibilidade de procedimentos

recursivos.

fac n = n * fac ( n - 1 ) , n > 0

= 1 , otherwise Se ProcA chama ProcB, ProcA nunca

termina antes do ProcB. Gerenciamento simples.

Page 10: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1010

fac 2 é re-escrito como

fac 2 => 2 * fac ( 2 - 1)

=> 2 * fac 1

=> 2 * (1 * fac ( 1 - 1))

=> 2 * (1 * fac 0)

=> 2 * (1 * 1)

=> 2 * 1

=> 2

Alocação em PilhaAlocação em Pilha

Page 11: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1111

Alocação em Pilha:Alocação em Pilha:

Organização da MemóriaOrganização da Memória

Programa Principal

Subrotina A

Subrotina B

Subrotina A

Subrotina A

Subrotina C

Memória deTrabalho

Pilha de Registrosde Ativação

Page 12: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1212

Garbage Collection:Garbage Collection:Alocação Dinâmica de MemóriaAlocação Dinâmica de Memória

Listas: quebra da disciplina de pilha. Uma rotina chamada pode gerar uma

estrutura de dados que viva após o término da sua chamada.

IPL-5 foi a primeira linguagem a ter listas como tipo primitivos. A falta de um GC foi a causa do seu insucesso.

LISP (J.McCarthy - 1960) foi a primeira linguagem a ter GC.

Page 13: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1313

Garbage Collection:Garbage Collection:

Organização da MemóriaOrganização da Memória

Programa Principal

Subrotina A

Memória deTrabalho

Pilha de Registrosde Ativação

Subrotina B

Subrotina C

Subrotina A

Heap

raiz 1 raiz 2

LixoLixo

Page 14: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1414

Garbage Collection:Garbage Collection:

Mark-Scan (J.McCarthy 1960)Mark-Scan (J.McCarthy 1960)

Heap

Free-list 1.Todas as1.Todas as célulasestãocélulasestão na free-listna free-list

Page 15: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1515

Garbage Collection:Garbage Collection:

Mark-Scan (J.McCarthy 1960)Mark-Scan (J.McCarthy 1960)

HeapFree-list

1.Todas as1.Todas as célulasestãocélulasestão na free-list.na free-list.2.O processo 2.O processo do usuário do usuário usa célulasusa células

Raiz

Page 16: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1616

Garbage Collection:Garbage Collection:

Mark-Scan (J.McCarthy 1960)Mark-Scan (J.McCarthy 1960)

Heap

Free-list

1.Todas as1.Todas as célulasestãocélulasestão na free-list.na free-list.2.O processo 2.O processo do usuário do usuário usa células.usa células.3.A reescrita 3.A reescrita do grafodo grafo gera lixo.gera lixo.

Raiz

Page 17: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1717

Garbage Collection:Garbage Collection:

Mark-Scan (J.McCarthy 1960)Mark-Scan (J.McCarthy 1960)

Heap Free-list

3.A reescrita 3.A reescrita do grafodo grafo gera lixo.gera lixo.4.A free-list 4.A free-list fica vazia. fica vazia.

Raiz

Page 18: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1818

Garbage Collection:Garbage Collection:

Mark-Scan (J.McCarthy 1960)Mark-Scan (J.McCarthy 1960)

Heap Free-list

3.A reescrita 3.A reescrita do grafodo grafo gera lixo.gera lixo.4.A free-list 4.A free-list fica vazia. fica vazia. 5.Suspenso o5.Suspenso o processo doprocesso do usuário.usuário.6.Fá-se a 6.Fá-se a marcação.marcação.

Raiz

Page 19: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

1919

Garbage Collection:Garbage Collection:

Mark-Scan (J.McCarthy 1960)Mark-Scan (J.McCarthy 1960)

Heap

Free-list

6.Fá-se a 6.Fá-se a marcação.marcação.7.Fá-se a 7.Fá-se a varredura,varredura, retornando retornando as células as células de lixo ade lixo a free-list.free-list.8.Retoma-se o8.Retoma-se o processo doprocesso do usúariousúario

Raiz

Page 20: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2020

Garbage Collection:Garbage Collection:

Mark-Scan (J.McCarthy 1960)Mark-Scan (J.McCarthy 1960)

Tempo de suspensão do processo do usuário:

Grafo_em_uso + Tamanho_da_Heap Imprevisibilidade do tempo de

suspensão. Necessita de 1-bit para a marcação.

Page 21: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2121

Reference Counting (Collins 1960)Reference Counting (Collins 1960)

Desenvolvido para LISP. Evita a suspensão do processo de

usuário. Efetuado em pequenos passos

intercalados com as transformações ao grafo.

Exige a inclusão de um contador por célula.

Page 22: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2222

Reference Counting (Collins 1960)Reference Counting (Collins 1960) NEW: tira uma célula da free-list e conecta-a ao

grafo.

1

2

1

1

1

1

1

Free-listFree-list

RootRoot

A A

New(A.esq)New(A.esq)

BB

CC

Page 23: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2323

Reference Counting (Collins 1960)Reference Counting (Collins 1960) NEW: tira uma célula da free-list e conecta-a ao

grafo.

1

2

1

1

1

1

1

Free-listFree-list

RootRoot

A A

New(A.esq)New(A.esq)

BB

CC

Page 24: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2424

Reference Counting (Collins 1960)Reference Counting (Collins 1960) COPY: copia um ponteiro.

11

1

1

1

Free-listFree-list

1

2

RootRoot

A A

Copy(C.dir, A->B)Copy(C.dir, A->B)

BB

CC

Page 25: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2525

Reference Counting (Collins 1960)Reference Counting (Collins 1960) COPY: copia um ponteiro.

12

1

1

1

Free-listFree-list

1

2

RootRoot

A A

Copy(C.dir, A->B)Copy(C.dir, A->B)

BB

CC

Page 26: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2626

Reference Counting (Collins 1960)Reference Counting (Collins 1960) DELETE: retira um ponteiro.

11

2

1

1

Free-listFree-list

1

2

RootRoot

A A

Delete(A->B)Delete(A->B)

BB

CC

Page 27: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2727

Reference Counting (Collins 1960)Reference Counting (Collins 1960) DELETE: retira um ponteiro.

11

2

1

1

Free-listFree-list

1

2

RootRoot

A A

Delete(A->B);Delete(A->B);Delete(Sons_B)Delete(Sons_B)

BB

CC

Page 28: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2828

Reference Counting (Collins 1960)Reference Counting (Collins 1960) DELETE: retira um ponteiro.

11

1

1

1

Free-listFree-list

1

2

RootRoot

A A

Delete(A->B);Delete(A->B);Delete(Sons_B);Delete(Sons_B);Free(B).Free(B).

BB

CC

Page 29: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

2929

Cyclic Reference Counting Cyclic Reference Counting McBeth 1963McBeth 1963

Delete(Root->A)Delete(Root->A)2

1

RootRootA A

BB

Deleção de ponteiro a cíclo:

Page 30: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3030

Cyclic Reference Counting Cyclic Reference Counting McBeth 1963McBeth 1963

Space-leak.

Delete(Root->A)Delete(Root->A)1

1

RootRootA A

BB

Page 31: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3131

Cyclic Reference Counting Cyclic Reference Counting Brownbridge 1985Brownbridge 1985

Algoritmo errado!!!!

2 2

RootRoot

A A BB

2

CC

Page 32: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3232

Cyclic Reference Counting Cyclic Reference Counting Martinez-Wachenchauzer-LinsMartinez-Wachenchauzer-Lins Algoritmo geral!!

2 2

RootRoot

A A BB

2

CC

Delete(Root->A)Delete(Root->A)

Page 33: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3333

Cyclic Reference Counting Cyclic Reference Counting Martinez-Wachenchauzer-LinsMartinez-Wachenchauzer-Lins Age em RF > 1 (sharing)

1 2

RootRoot

A A BB

2

CC

Delete(Root->A)Delete(Root->A)Mark_red(A)Mark_red(A)

Page 34: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3434

Cyclic Reference Counting Cyclic Reference Counting Martinez-Wachenchauzer-LinsMartinez-Wachenchauzer-Lins Mark-Scan local

0 0

RootRoot

A A BB

1

CC

Delete(Root->A)Delete(Root->A)Mark_red(A)Mark_red(A)Scan_green(A)Scan_green(A)

Page 35: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3535

Cyclic Reference Counting Cyclic Reference Counting Martinez-Wachenchauzer-LinsMartinez-Wachenchauzer-Lins Busca referências externas.

0 0

RootRoot

A A BB

1

CC

Delete(Root->A)Delete(Root->A)Mark_red(A)Mark_red(A)Scan_green(A)Scan_green(A)

Page 36: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3636

Cyclic Reference Counting Cyclic Reference Counting Martinez-Wachenchauzer-LinsMartinez-Wachenchauzer-Lins Encontrada referência externa.

0 0

RootRoot

A A BB

1

CC

Delete(Root->A)Delete(Root->A)Mark_red(A)Mark_red(A)Scan_green(A)Scan_green(A)

Page 37: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3737

Cyclic Reference Counting Cyclic Reference Counting Martinez-Wachenchauzer-LinsMartinez-Wachenchauzer-Lins Sub-grafo em uso.

0 0

RootRoot

A A BB

1

CC

Delete(Root->A)Delete(Root->A)Mark_red(A)Mark_red(A)Scan_green(C)Scan_green(C)

Page 38: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3838

Cyclic Reference Counting Cyclic Reference Counting Martinez-Wachenchauzer-LinsMartinez-Wachenchauzer-Lins Referências atualizadas.

0 1

RootRoot

A A BB

2

CC

Delete(Root->A)Delete(Root->A)Mark_red(A)Mark_red(A)Scan_green(C)Scan_green(C)

Page 39: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

3939

Cyclic Reference Counting Cyclic Reference Counting Martinez-Wachenchauzer-LinsMartinez-Wachenchauzer-Lins Busca de lixo reciclável!

1 2

RootRoot

A A BB

2

CC

Delete(Root->A)Delete(Root->A)Mark_red(A)Mark_red(A)Scan_green(A)Scan_green(A)Collect_blue(A)Collect_blue(A)

Publicado em:Publicado em:Information Processing Letters 1990Information Processing Letters 1990

Page 40: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4040

Lazy Cyclic Reference Counting Lazy Cyclic Reference Counting

LinsLins Mark-Scan postergado.

2 2

RootRoot

A A BB

2

CC

Delete(Root->A)Delete(Root->A)

Page 41: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4141

Lazy Cyclic Reference Counting Lazy Cyclic Reference Counting

LinsLins Mark-Scan postergado.

1 2

RootRoot

A A BB

2

CC

Delete(Root->A)Delete(Root->A)

PilhaPilha

Publicado em:Publicado em:Information Processing Letters 1992Information Processing Letters 1992

Page 42: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4242

Lazy Cyclic Reference Counting Lazy Cyclic Reference Counting

LinsLins Mark-Scan só é chamado se necessário!!

1 2

RootRoot

A A BB

2

CC

Delete(Root->A)Delete(Root->A)

PilhaPilha

Page 43: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4343

Garbage Collection:Garbage Collection:

Cópia (Fenichel-Yochelson 1969)Cópia (Fenichel-Yochelson 1969)

A Heap é dividida em dois semi-espaços de igual tamanho.

Quando o semi-espaço em uso fica esgotado cópia-se o grafo-em-uso para o outro semi-espaço deixando o lixo para trás.

Page 44: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4444

Garbage Collection:Garbage Collection:

Cópia (Fenichel-Yochelson 1969)Cópia (Fenichel-Yochelson 1969)

heap_1 heap_2

hp hp

raiz

Page 45: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4545

Garbage Collection:Garbage Collection:

Cópia (Fenichel-Yochelson 1969)Cópia (Fenichel-Yochelson 1969)

heap_1 heap_2 hp hp

raiz

Page 46: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4646

Garbage Collection:Garbage Collection:

Cópia (Fenichel-Yochelson 1969)Cópia (Fenichel-Yochelson 1969)

heap_1 heap_2

hp hp

raiz

Page 47: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4747

Garbage Collection:Garbage Collection:

Cópia (Fenichel-Yochelson 1969)Cópia (Fenichel-Yochelson 1969)

heap_1 heap_2

hp hp

raiz

Page 48: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4848

Garbage Collection:Garbage Collection:

Cópia (Fenichel-Yochelson 1969)Cópia (Fenichel-Yochelson 1969)

A cópia é recursiva. Há suspensão do processo de

usuário. Eficiente em máquinas com memória

virtual. Não necessita de espaço extra na

célula para marcação.

Page 49: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

4949

Garbage Collection:Garbage Collection:

Cópia (Fenichel-Yochelson 1969)Cópia (Fenichel-Yochelson 1969)

Complexidade computacional proporcional ao grafo-em-uso.

Degrada com a ocupância. Compacta os dados sem custo extra. Adequado para células de tamanho

variável.

Page 50: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5050

Garbage Collection:Garbage Collection:

Cópia (Cheney 1970)Cópia (Cheney 1970)

Algoritmo mais amplamente usado.Algoritmo mais amplamente usado.

Não utiliza recursividade ou qualquer Não utiliza recursividade ou qualquer

outra estrutura de dados extra para outra estrutura de dados extra para

“lembrar” o caminho da cópia.“lembrar” o caminho da cópia.

Utiliza dois apontadores.Utiliza dois apontadores.

Page 51: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5151

Garbage Collection:Garbage Collection:

Cópia (Cheney 1970)Cópia (Cheney 1970)

heap_1

heap_2

hp hp

raiz

cp cp

Page 52: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5252

Garbage Collection:Garbage Collection:

Cópia (Cheney 1970)Cópia (Cheney 1970)

heap_1

heap_2

hp hp

raiz

cp cp

Page 53: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5353

Garbage Collection:Garbage Collection:

Cópia (Cheney 1970)Cópia (Cheney 1970)

heap_1

heap_2

hp hp

raiz

cp cp

Page 54: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5454

Garbage Collection:Garbage Collection:

CópiaCópia O algoritmo de Fenichel-Yochelson Fenichel-Yochelson faz

uma varredura no grafo em profundidade (depth-firstdepth-first).

O algoritmo de CheneyCheney varre o grafo breadth-firstbreadth-first.

Experimentalmente encontra-se que a varredura depth-firstdepth-first traz maior localidadelocalidade entre as células.

Há versões de Cheney depth-first.Há versões de Cheney depth-first.

Page 55: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5555

Garbage Collection:Garbage Collection:

Cópia Generacional.Cópia Generacional.

Otimiza o algoritmo de cópia.cópia.

Células novas morrem cedo.

Células velhas vivem muito.

Segrega as células por idade:

várias heaps utilizadas.

Evidência experimental.

Page 56: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5656

Garbage Collection:Garbage Collection:

Cópia Generacional.Cópia Generacional.

Heap 2

Raiz

Heap 1

Heap 0

CelulasCelulasVelhasVelhas

CelulasCelulasNovasNovas

Page 57: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5757

Garbage Collection:Garbage Collection:

Cópia Generacional.Cópia Generacional.

Minor Garbage Collection:– Heaps mais novas.Heaps mais novas.– Mais freqüênte.Mais freqüênte.

Major Garbage Collection:– Equivalente ao algoritmo original de cópia.– Heap mais velha.

Problema do algoritmo: ponteiros intergeneracionais sobretudo ponteiros intergeneracionais sobretudo

célula_mais_nova -> célula_mais_velhacélula_mais_nova -> célula_mais_velha

Page 58: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5858

Parallel Garbage Collection:Parallel Garbage Collection:

Cópia - Appel-Ellis-Li (1988)Cópia - Appel-Ellis-Li (1988) Baseado em BakerBaker. Usa informação do Sistema Operacional

para bloquear páginas de memória. Faltando espaço:Faltando espaço:

Suspende todos os threads do mutador.Suspende todos os threads do mutador. O coletor varre os objetos ainda não O coletor varre os objetos ainda não

varridos.varridos.

Page 59: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

5959

Parallel Garbage Collection:Parallel Garbage Collection:

Cópia - Appel-Ellis-Li (1988)Cópia - Appel-Ellis-Li (1988)

Faltando espaço:Faltando espaço: Troca os semi-espaços.Troca os semi-espaços. Copia os objetos acessíveis para Copia os objetos acessíveis para to-to-

spacespace.. Proteje as páginas ainda não Proteje as páginas ainda não

copiadas.copiadas. Re-inicia os threads de mutadores.Re-inicia os threads de mutadores.

Algoritmo eficiente.

Page 60: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

6060

Page 61: 1 Garbage Collection Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

6161