Your SlideShare is downloading. ×
Garbage Collector
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Garbage Collector

8,078
views

Published on

Apresentação sobre Garbage Collector.

Apresentação sobre Garbage Collector.

Published in: Education

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,078
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
38
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. UNIVERSIDADE DE PERNAMBUCOGarbage Collector
  • 2. UNIVERSIDADE DE PERNAMBUCORoteiro da Apresentação • Conceitos Básicos • O que é o Garbage Collector • Analisando o Código • Execução do Garbage Collector • Exemplos • Algoritmos para Coleta de Lixo: o Mark and Sweep Algorithm o Reference Counting Algorithm o Copying Algorithm • Referências.
  • 3. UNIVERSIDADE DE PERNAMBUCO Conceitos BásicosExistem três estratégias para se alocar memória: o Estática: áreas de memória são alocadas antes do início do programa; o Linear: memória alocada em fila ou em pilha; o Dinâmica: permite liberdade de criação e remoção em ordem arbitrária; 3
  • 4. UNIVERSIDADE DE PERNAMBUCO• Java utiliza alocação dinâmica (heap) para objetos e alocação linear (pilha) para procedimentos sequenciais;• Programadores não têm a responsabilidade e nem a possibilidade de gerenciar a memória do sistema;• A alocação e liberação de memória dinâmica é realizada automaticamente usando algoritmos; 4
  • 5. UNIVERSIDADE DE PERNAMBUCOEntão, por que se preocupar com memória em Java? 5
  • 6. UNIVERSIDADE DE PERNAMBUCO• Mas algoritmos são configurados para situações típicas: o Determinadas aplicações podem requerer ajustes; o Saber o quanto, quando, onde ajustar requer conhecimentos elementares; 6
  • 7. UNIVERSIDADE DE PERNAMBUCO A medida que vamos fazendoalocações na heap o espaço vai setornando cada vez mais escasso. Fazendo uma analogia seria comoum quarto repleto de coisas dispostas dequalquer forma onde não se há maisespaço para se guardar novos objetos... 7
  • 8. UNIVERSIDADE DE PERNAMBUCOQualquer semelhança a algum ambiente conhecido é mera coincidência! 8
  • 9. UNIVERSIDADE DE PERNAMBUCO Neste caso é necessário chamar alguém que entende melhor do assunto para podernos ajudar nesta tarefa árdua e complicada, que é organizar tudo! 9
  • 10. UNIVERSIDADE DE PERNAMBUCOO Garbage Collector é a nossa faxineira querida de cada dia! 10
  • 11. UNIVERSIDADE DE PERNAMBUCO Garbage Collector• Garbage Collector é o nome de uma rotina básica de alguns sistemas, que serve para recuperar o espaço de memória que havia sido alocado para uso por alguma aplicação [1];• Esse espaço de memória posteriormente ficou em desuso pela aplicação [1];• A alocação dos objetos é decidida em tempo de compilação e estes são alocados no Heap [2] [3];11
  • 12. UNIVERSIDADE DE PERNAMBUCO É papel dessa rotina identificar e reaproveitar osespaços de memória que não são mais utilizados! 12
  • 13. UNIVERSIDADE DE PERNAMBUCO Exemplo Para facilitar a compreensão doassunto vamos considerar um esquema dealocação dinâmica de espaço de memória,uma lista ligada como mostra a próximafigura. 13
  • 14. UNIVERSIDADE DE PERNAMBUCO Esquema de Alocação de Memória DinâmicaInício ... 14
  • 15. UNIVERSIDADE DE PERNAMBUCO Analisando o código: Vamos analisar o trecho de códigoabaixo e saber o que acontece quando ainstrução new é invocada: Public class Empresa { Cliente novoCliente = new Cliente(); } 15
  • 16. UNIVERSIDADE DE PERNAMBUCO Quando a instrução new é invocada asseguintes tarefas são realizadas:• „ alcula-se o total de memória necessária; C• „ heap é examinado; O• Se tiver espaço, o construtor é invocado.• Antes de retornar a referência, avança com o ponteiro next object pointer [3]. 16
  • 17. UNIVERSIDADE DE PERNAMBUCO E se não houverespaço suficiente no heap? 17
  • 18. UNIVERSIDADE DE PERNAMBUCO Quando, ao processar a instruçãonew, no heap não houver memóriasuficiente, se executa o GarbageCollector [3]. 18
  • 19. UNIVERSIDADE DE PERNAMBUCOExecução do Garbage Collector• Uma unidade de espaço é considerada ativa ou útil quando ela pode ser acessada ou atingida [1]. Início ... 19
  • 20. UNIVERSIDADE DE PERNAMBUCO• Caso uma unidade de espaço não possa ser acessada, então ela é definida como inativa ou lixo [1];• Unidades podem se tornar lixo quando ponteiros são redirecionados tornando-as inacessíveis [1], como veremos na próxima figura: 20
  • 21. UNIVERSIDADE DE PERNAMBUCOLista 1 ...Lista 2 ... 21
  • 22. UNIVERSIDADE DE PERNAMBUCOLista 1 ...Lista 2 Lixo ... 22
  • 23. UNIVERSIDADE DE PERNAMBUCOLista 1 ...Lista 2 ... 23
  • 24. UNIVERSIDADE DE PERNAMBUCOLista 1 ... Lixo!Lista 2 Lixo! ... 24
  • 25. UNIVERSIDADE DE PERNAMBUCO• Durante o processo de garbage collector, os objetos no heap são investigados, para isso é construído um grafo de objetos, como ilustra a próxima figura: 25
  • 26. UNIVERSIDADE DE PERNAMBUCO Exemplo 01Heap G E Y H S V B M W QGrafo E Q Y G M W H B V S 26
  • 27. UNIVERSIDADE DE PERNAMBUCO Exemplo 01Heap G E Y H S V B M W QGrafo E Q Y G LIXO! M W H B V S LIXO! 27
  • 28. UNIVERSIDADE DE PERNAMBUCO Exemplo 01 Heap CompactadoG E Y H V B W Q Next Object Pointer 28
  • 29. UNIVERSIDADE DE PERNAMBUCO Exemplo 02Heap A M T P L K J E Q S V Y G R U X I O H Z D C F N W B 29
  • 30. UNIVERSIDADE DE PERNAMBUCOGrafo Exemplo 02 A B P T D C O Q K E L M Y F J N W Z G I S V H U R X 30
  • 31. UNIVERSIDADE DE PERNAMBUCO Exemplo 02Grafo LIXO! A B P T D C O Q K E L M Y LIXO! F J N W Z G I LIXO! S VLIXO! H U R X 31
  • 32. UNIVERSIDADE DE PERNAMBUCO Exemplo 02 Heap A M T L K J E Q V G R U XCompactado I O Z D C F N W B Next Object Pointer 32
  • 33. UNIVERSIDADE DE PERNAMBUCO• Há várias implementações de algoritmos de coleta de lixo, cada um com suas vantagens e desvantagens [4];• O comportamento desse algoritmo é o principal gargalo na maior parte das aplicações de vida longa [4];• Conhecer os detalhes do funcionamento do algoritmo de coleta de lixo é importante [4]; 33
  • 34. UNIVERSIDADE DE PERNAMBUCO Influência da coleta de lixo nas próximas alocações [4]:• A remoção de objetos deixa buracos no heap;• Para alocar novos objetos, é preciso procurar nas listas de espaços vazios (free lists) um que caiba o próximo objeto;• Alguns algoritmos compactam o heap, movendo os objetos para o início do heap e atualizando os ponteiros. 34
  • 35. UNIVERSIDADE DE PERNAMBUCO Algoritmos para Coleta de Lixo:• Mark and Sweep Algorithm: rastreia objetos do heap, marca o que não é lixo e depois varre o lixo.• Reference Counting Algorithm: mantém, em cada objeto, uma contagem das referências para ele; coleta os objetos que têm contagem zero;• Copying Algorithm: divide o heap em duas partes; cria objetos em uma parte do heap e deixa outra parte vazia; recolhe o que não é lixo e copia para a área limpa, depois esvazia a área suja. 35
  • 36. UNIVERSIDADE DE PERNAMBUCO Mark and Sweep Algorithm• O método Mark and Sweep, foi criado em 1960 por J. McCarthy [2];• Esse método é geral e funciona sempre, isto é, todo lixo é sempre identificado e recolhido;• Usa um bit adicional por elemento para servir de marca;• O método consiste de duas fases: uma fase de marcação seguida de uma fase de varredura e recolhimento [1]. 36
  • 37. UNIVERSIDADE DE PERNAMBUCOFase de Marcação (Mark)• A partir de ponteiros externos conhecidos, todos os elementos das estruturas de dados acessíveis são marcados [1];• Para isso é necessário algum algoritmo para percorrer essas estruturas para ajudar no percurso e na marcação [1]; 37
  • 38. UNIVERSIDADE DE PERNAMBUCOFase da Varredura (Sweep)• O espaço das posições em que estão implementadas as estruturas de dados, bem como a lista dos elementos livres, é varrido ou percorrido sequencialmente [1]; 38
  • 39. UNIVERSIDADE DE PERNAMBUCO Quando cada elemento é examinado, étomada uma das duas ações [1]: • Se o elemento é marcado, simplesmente desmarca esse elemento e nada mais é feito com o elemento; • Se o elemento não é marcado, então por definição ele é lixo e é recolhido. 39
  • 40. UNIVERSIDADE DE PERNAMBUCO• Vantagens: o Não precisa de algoritmo complicados; o Pode ser mais rápido que Contagem de Referências. 40
  • 41. UNIVERSIDADE DE PERNAMBUCO• Desvantagens: o Interrompe a aplicação principal; o Fragmentação pode aumentar a frequência em que o Garbage Collector ocorre; o Precisa visitar todos os objetos alcançáveis na fase de marcação e varrer o heap inteiro. 41
  • 42. UNIVERSIDADE DE PERNAMBUCOReference Counting Algorithm• O método Reference Counting foi criado por Collins em 1960 [2];• Tem a vantagem de identificar o lixo e procede seu recolhimento assim que o lixo surgir [1];• Usa um contador por elemento para servir de contagem de referências [1]; 42
  • 43. UNIVERSIDADE DE PERNAMBUCO• O contador de referências indica a quantidade de ponteiros ou referências a esse elemento [1].• Este contador deve ser sempre mantido atualizado. [1]. 43
  • 44. UNIVERSIDADE DE PERNAMBUCO• Quando o contador de referências de um elemento atinge o valor zero, o elemento é lixo por definição;• O elemento é então recolhido ao espaço livre. 44
  • 45. UNIVERSIDADE DE PERNAMBUCO• Vantagens: o Rápido: não precisa varrer o heap inteiro; o Pode executar em paralelo com a aplicação. 45
  • 46. UNIVERSIDADE DE PERNAMBUCO• Desvantagens: o Custo de processamento alto; o Incapacidade de avaliar estruturas cíclicas.• Soluções: o Algoritmo de Coleta de Ciclos. 46
  • 47. UNIVERSIDADE DE PERNAMBUCO Copying Algorithm• O método Copying Algorithm, foi criado por Chenney em 1970 [4];• O método de Cópia divide o heap em duas áreas iguais chamadas de origem (from space) e destino (to space) [4]; 47
  • 48. UNIVERSIDADE DE PERNAMBUCO O Algoritmo funciona da seguinte maneira [4]:1. Objetos são alocados na área “from”;2. Quando o coletor de lixo é executado, elenavega pela corrente de referências e copia osobjetos alcançáveis para a área “to”;3. Quando a cópia é completada, os espaços “to”e “from” trocam de papel; 48
  • 49. UNIVERSIDADE DE PERNAMBUCOHeap Origem: From Heap Destino: To J F G B E U P Z Q W 49
  • 50. UNIVERSIDADE DE PERNAMBUCOHeap Origem: From Heap Destino: To J J F G G U B Z E Q U W P Z Q W 50
  • 51. UNIVERSIDADE DE PERNAMBUCOHeap Destino: To Heap Origem: From J J F G G U B Z E Q U W P Z Q W 51
  • 52. UNIVERSIDADE DE PERNAMBUCOVantagens: o A cópia ocorre de forma rápida; o Não precisa visitar o heap inteiro; o Não fragmenta a memória do heap. 52
  • 53. UNIVERSIDADE DE PERNAMBUCODesvantagens: o Aplicação precisa parar; o Dobra a necessidade de memória do heap; o Uso ineficiente de memória. 53
  • 54. UNIVERSIDADE DE PERNAMBUCO Sugestão de Vídeo Sobre o Assunto:Link:http://mais.uol.com.br/view/ee0dmzfst8i2/garbagecollector040262D0B93346?types=A 54
  • 55. UNIVERSIDADE DE PERNAMBUCO Referências[1] SONG, S. W. Coletor de Lixo (Garbage Collector). Universidadede são Paulo – IME/USP, 2008. Apostila.[2] LINS, R. D. Garbage Collection. Universidade Federal dePernambuco. Apostila.[3] LEITE, N. Garbage Collection. ISEL/LEIC – Semestre de Inverno.Disponível em: http://www.deetc.isel.ipl.pt/programacao/ave/ . 2008-2009. Apostila.[4] ROCHA, H. Gerência de Memória em Java – Parte I: Arquiteturada JVM e Algoritmos de Coleta de Lixo. Disponível em:http://www.argonavis.com.br/. 2005. Apostila.