Upload
caique-gloria
View
226
Download
0
Embed Size (px)
Citation preview
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.
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