UNIVERSIDADE DE PERNAMBUCOGarbage Collector
UNIVERSIDADE DE PERNAMBUCORoteiro da Apresentação • Conceitos Básicos • O que é o Garbage Collector • Analisando o Código ...
UNIVERSIDADE DE PERNAMBUCO          Conceitos BásicosExistem três estratégias para se alocar memória:   o Estática: áreas ...
UNIVERSIDADE DE PERNAMBUCO• Java utiliza alocação dinâmica (heap) para objetos  e alocação linear (pilha) para procediment...
UNIVERSIDADE DE PERNAMBUCOEntão, por que se preocupar com       memória em Java?                                    5
UNIVERSIDADE DE PERNAMBUCO• Mas algoritmos são configurados para situações  típicas:  o Determinadas     aplicações     po...
UNIVERSIDADE DE PERNAMBUCO    A medida que vamos fazendoalocações na heap o espaço vai setornando cada vez mais escasso.  ...
UNIVERSIDADE DE PERNAMBUCOQualquer semelhança a algum ambiente conhecido é mera coincidência!   8
UNIVERSIDADE DE PERNAMBUCO   Neste caso é necessário chamar alguém que entende melhor do assunto para podernos ajudar nest...
UNIVERSIDADE DE PERNAMBUCOO Garbage Collector é  a nossa faxineira querida de cada dia!                                  10
UNIVERSIDADE DE PERNAMBUCO         Garbage Collector• Garbage Collector é o nome de uma rotina básica  de alguns sistemas,...
UNIVERSIDADE DE PERNAMBUCO    É papel dessa rotina identificar e reaproveitar osespaços de memória que não     são mais uti...
UNIVERSIDADE DE PERNAMBUCO              Exemplo      Para facilitar a compreensão doassunto vamos considerar um esquema de...
UNIVERSIDADE DE PERNAMBUCO     Esquema de Alocação de        Memória DinâmicaInício                                       ...
UNIVERSIDADE DE PERNAMBUCO     Analisando o código:      Vamos analisar o trecho de códigoabaixo e saber o que acontece qu...
UNIVERSIDADE DE PERNAMBUCO     Quando a instrução new é invocada asseguintes tarefas são realizadas:• „ alcula-se o total ...
UNIVERSIDADE DE PERNAMBUCO  E se não houverespaço suficiente no       heap?                                 17
UNIVERSIDADE DE PERNAMBUCO     Quando, ao processar a instruçãonew, no heap não houver memóriasuficiente, se executa o Gar...
UNIVERSIDADE DE PERNAMBUCOExecução do Garbage Collector• Uma unidade de espaço é considerada ativa ou  útil quando ela pod...
UNIVERSIDADE DE PERNAMBUCO• Caso uma unidade de espaço não possa ser  acessada, então ela é definida como inativa ou  lixo ...
UNIVERSIDADE DE PERNAMBUCOLista 1                                            ...Lista 2                                   ...
UNIVERSIDADE DE PERNAMBUCOLista 1                                            ...Lista 2                         Lixo      ...
UNIVERSIDADE DE PERNAMBUCOLista 1                                            ...Lista 2                                   ...
UNIVERSIDADE DE PERNAMBUCOLista 1                                                    ...                                  ...
UNIVERSIDADE DE PERNAMBUCO• Durante o processo de garbage collector, os  objetos no heap são investigados, para isso  é co...
UNIVERSIDADE DE PERNAMBUCO             Exemplo 01Heap    G E Y H S V B M W QGrafo              E         Q        Y       ...
UNIVERSIDADE DE PERNAMBUCO                    Exemplo 01Heap        G E Y H S V B M W QGrafo               E        Q     ...
UNIVERSIDADE DE PERNAMBUCO      Exemplo 01   Heap CompactadoG E Y H V B W Q                        Next Object Pointer    ...
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        ...
UNIVERSIDADE DE PERNAMBUCOGrafo         Exemplo 02    A        B            P          T    D        C            O       ...
UNIVERSIDADE DE PERNAMBUCO              Exemplo 02Grafo                       LIXO!        A        B             P       ...
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...
UNIVERSIDADE DE PERNAMBUCO• Há várias implementações de algoritmos de coleta  de lixo, cada um com suas vantagens e  desva...
UNIVERSIDADE DE PERNAMBUCO    Influência da coleta de lixo nas próximas                  alocações [4]:• A remoção de obje...
UNIVERSIDADE DE PERNAMBUCO    Algoritmos para Coleta de Lixo:•   Mark and Sweep Algorithm: rastreia objetos do    heap, ma...
UNIVERSIDADE DE PERNAMBUCO    Mark and Sweep Algorithm•   O método Mark and Sweep, foi criado em 1960 por J.    McCarthy [...
UNIVERSIDADE DE PERNAMBUCOFase de Marcação (Mark)•   A partir de ponteiros externos conhecidos,    todos os elementos das ...
UNIVERSIDADE DE PERNAMBUCOFase da Varredura (Sweep)•   O espaço das posições em que estão    implementadas as estruturas d...
UNIVERSIDADE DE PERNAMBUCO    Quando cada elemento é examinado, étomada uma das duas ações [1]:  • Se o elemento é marcado...
UNIVERSIDADE DE PERNAMBUCO• Vantagens:  o Não precisa de algoritmo complicados;  o Pode ser mais rápido que Contagem de   ...
UNIVERSIDADE DE PERNAMBUCO• Desvantagens:  o Interrompe a aplicação principal;  o Fragmentação pode aumentar a frequência ...
UNIVERSIDADE DE PERNAMBUCOReference Counting Algorithm• O método Reference Counting foi criado por  Collins em 1960 [2];• ...
UNIVERSIDADE DE PERNAMBUCO• O contador de referências indica a  quantidade de ponteiros ou referências a  esse elemento [1...
UNIVERSIDADE DE PERNAMBUCO• Quando o contador de referências de um  elemento atinge o valor zero, o elemento é  lixo por d...
UNIVERSIDADE DE PERNAMBUCO• Vantagens:  o Rápido: não precisa varrer o heap inteiro;  o Pode executar em paralelo         ...
UNIVERSIDADE DE PERNAMBUCO• Desvantagens:  o Custo de processamento alto;  o Incapacidade      de     avaliar    estrutura...
UNIVERSIDADE DE PERNAMBUCO     Copying Algorithm• O método Copying Algorithm, foi criado por  Chenney em 1970 [4];• O méto...
UNIVERSIDADE DE PERNAMBUCO O Algoritmo funciona da seguinte maneira                   [4]:1. Objetos são alocados na área ...
UNIVERSIDADE DE PERNAMBUCOHeap Origem: From              Heap Destino: To       J       F       G       B       E       U ...
UNIVERSIDADE DE PERNAMBUCOHeap Origem: From              Heap Destino: To       J                                J       F...
UNIVERSIDADE DE PERNAMBUCOHeap Destino: To              Heap Origem: From       J                                J       F...
UNIVERSIDADE DE PERNAMBUCOVantagens:  o A cópia ocorre de forma rápida;  o Não precisa visitar o heap inteiro;  o Não frag...
UNIVERSIDADE DE PERNAMBUCODesvantagens:  o Aplicação precisa parar;  o Dobra a necessidade de memória do    heap;  o Uso i...
UNIVERSIDADE DE PERNAMBUCO  Sugestão de Vídeo Sobre o Assunto:Link:http://mais.uol.com.br/view/ee0dmzfst8i2/garbagecollect...
UNIVERSIDADE DE PERNAMBUCO                     Referências[1] SONG, S. W. Coletor de Lixo (Garbage Collector). Universidad...
Upcoming SlideShare
Loading in...5
×

Garbage Collector

8,253

Published on

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,253
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
40
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Garbage Collector

  1. 1. UNIVERSIDADE DE PERNAMBUCOGarbage Collector
  2. 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. 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. 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. 5. UNIVERSIDADE DE PERNAMBUCOEntão, por que se preocupar com memória em Java? 5
  6. 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. 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. 8. UNIVERSIDADE DE PERNAMBUCOQualquer semelhança a algum ambiente conhecido é mera coincidência! 8
  9. 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. 10. UNIVERSIDADE DE PERNAMBUCOO Garbage Collector é a nossa faxineira querida de cada dia! 10
  11. 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. 12. UNIVERSIDADE DE PERNAMBUCO É papel dessa rotina identificar e reaproveitar osespaços de memória que não são mais utilizados! 12
  13. 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. 14. UNIVERSIDADE DE PERNAMBUCO Esquema de Alocação de Memória DinâmicaInício ... 14
  15. 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. 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. 17. UNIVERSIDADE DE PERNAMBUCO E se não houverespaço suficiente no heap? 17
  18. 18. UNIVERSIDADE DE PERNAMBUCO Quando, ao processar a instruçãonew, no heap não houver memóriasuficiente, se executa o GarbageCollector [3]. 18
  19. 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. 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. 21. UNIVERSIDADE DE PERNAMBUCOLista 1 ...Lista 2 ... 21
  22. 22. UNIVERSIDADE DE PERNAMBUCOLista 1 ...Lista 2 Lixo ... 22
  23. 23. UNIVERSIDADE DE PERNAMBUCOLista 1 ...Lista 2 ... 23
  24. 24. UNIVERSIDADE DE PERNAMBUCOLista 1 ... Lixo!Lista 2 Lixo! ... 24
  25. 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. 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. 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. 28. UNIVERSIDADE DE PERNAMBUCO Exemplo 01 Heap CompactadoG E Y H V B W Q Next Object Pointer 28
  29. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 49. UNIVERSIDADE DE PERNAMBUCOHeap Origem: From Heap Destino: To J F G B E U P Z Q W 49
  50. 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. 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. 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. 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. 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. 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.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×