GARBAGE COLLECTOR 1 UNIVERSIDADE FEDERAL DO PARÁ - UFPA.

22
GARBAGE COLLECTOR 1 UNIVERSIDADE FEDERAL DO PARÁ - UFPA

Transcript of GARBAGE COLLECTOR 1 UNIVERSIDADE FEDERAL DO PARÁ - UFPA.

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

1

GARBAGE COLLECTOR

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

2

N O ME: G U IL H ERME BO U LH O S A G U IMARÃES .e m a i l : g u i l h e r m e . g u i m a r a e s @ g a s p a r v i a n n a . p a . g o v. b r

N O ME: RA IMU N D O MED EIRO S N ETOe m a i l : n e t o v i s . p a n o t e c @ g m a i l . c o m

N O ME: J O EL CIO LU IZ G R AIM FERREIRAe m a i l : j o e l c i o . g r a i m @ g m a i l . c o m

N O ME: L EO N ARD O D EL A FL O RAe m a i l : l e o 1 3 . c r u z @ g m a i l . c o m

N O ME: BR U N O G A RCIAe m a i l : i n f o r m . g a rc i a @ g m a i l . c o m

GARBAGE COLLECTOR

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

3

INTRODUÇÃO

O conceito de garbage collector (GC) nasceu em 1959 por John McCarthy, para resolver problemas do Lisp;

A maioria das linguagens modernas de programação é dotada de mecanismos de gerenciamento automático de memória por meio de um GARBAGE COLLECTOR (GB);

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

4

C# Vs. JAVA

Em C# o Garbage Collected é manuseado pelo Common Language Runtime (CLR), que possui funcionalidades similares ao do JVM, onde o CLR periodicamente verifica o Heap () de memória a procura de objetos não referenciados;

Em Java a JVM cuida e controla a liberação da memória através da API Garbage-Collected;

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

5

GERENCIAMNETO AUTOMÁTICO DE MEMÓRIA

Gerenciamento automático de memória é um dos serviços que o Common Language Runtime (CLR) fornece durante a Execução Gerenciada;

O Garbage Collector gerencia todo o processo de ciclo de vida dos objetos, visando a melhor manutenção da aplicação e tentando evitar problemas de memory leaks, hangs ou crashes;

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

6

ALOCAÇÃO DE MEMÓRIA

Região contígua de espaço de endereço – HEAP Gerenciada;

Endereço básico da Heap Gerenciada é um ponteiro;

Coletor de Lixo aloca memória no espaço de endereço;

Maior velocidade na alocação de memória com Heap Gerenciada;

Alocação de memória com Runtime;

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

7

LIBERAÇÃO DE MEMÓRIA

O Coletor de lixo determina o melhor momento para executar uma coleta;

Ele determina quais objetos não são mais usados pelo exame das raízez do aplicativo;

Compilador Just-In-Time (JIT);

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

8

LIBERAÇÃO DE MEMÓRIA

Objetos Inacessíveis;

Função de copia de memória para compactar os objetos acessíveis;

Objetos sobreviventes;

Melhor desempenho (Heap separado);

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

9

LIBERAÇÃO DE MEMÓRIA

“Sala 152”

“Carlos”

01/01/2009

c=5datab=2obj

PILHA

•Antes da Remoção

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

10

LIBERAÇÃO DE MEMÓRIA

Processo de análise das Raízes.

“Sala 152”

“Carlos”

01/01/2009

c=5datab=2obj

PILHA

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

11

LIBERAÇÃO DE MEMÓRIA

Depois da Remoção

“Sala 152”

“Carlos”

c=5

b=2obj

PILHA

GERAÇÕES E DESEMPENHO

Para otimizar o desempenho do coletor de lixo, o heap gerenciado é dividido em três gerações: 0, 1 e 2.

Motivos: Compactar parte da heap gerenciada. Objetos mais recentes tem vida úteis menores.

GERAÇÕES E DESEMPENHO

Geração 0(zero) armazena os novos objetos.Objetos criados com antecedência no tempo

de vida do aplicativo que sobrevivem a coletas são promovidos e armazenados em gerações 1 e 2.

Como resultado, o coletor de lixo não tem como reexaminar os objetos em gerações 1 e 2.

GERAÇÕES E DESEMPENHO

Funcionamento:Após cada coleta, o coletor de lixo compacta

os objetos acessíveis na geração 0 e promove-os para a geração 1.

Objetos na geração 1 que sobrevivem a coletas são elevados para a geração 2.

Objetos na geração 2 que sobrevivem a uma coleta permanecem na geração 2 até que eles sejam determinados como inalcançáveis em uma coleta futura.

GERAÇÕES E DESEMPENHO

Melhor desempenho:Libera memória em uma geração específica

em vez de liberar a memória para toda a memória gerenciada a cada vez que ele executa uma coleta.

GERAÇÕES E DESEMPENHO

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

17Liberando Memória para Recursos não Gerenciados

O coletor de lixo executa automaticamente as tarefas de gerenciamento de memória para maioria dos objetos criados pelo aplicativo;

Enquanto que recursos não gerenciados requerem limpeza explícita. Exemplos, são objetos que envolve um recurso do sistema operacional como: identificador de arquivo, identificador de janela ou conexão de rede;

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

18Liberando Memória para Recursos não Gerenciados

Embora um objeto gerenciado encapsula um objeto não gerenciado, não tem conhecimento específico para limpar o recurso. Nesse caso é necessário fornecer o código de um método público Dispose;

Você deve estar ciente de implementar o método Dispose para liberação explícita de memória;

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

19

CONCLUSÃO

A Presença do Garbage Collector na plataforma .NET impulsionou a produtividade no desenvolvimento de aplicações , eximindo os desenvolvedores do compromisso de fazer desalocação explicita de objetos não mais necessários em suas aplicações.

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

20

REFRÊNCIAS

http://msdn.microsoft.com/pt-br/library/ms228629(VS.80).aspx http://msdn.microsoft.com/en-us/library/ms973837.aspx http://msdn.microsoft.com/en-us/magazine/bb985010.aspx

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

21

A EQUIPE AGRADECE PELA ATENÇÃO.

OBRIGADO!!!

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

22

PERGUNTAS