SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
UNIVERSIDADE DE PERNAMBUCO




Garbage Collector
UNIVERSIDADE DE PERNAMBUCO




Roteiro 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.
UNIVERSIDADE DE PERNAMBUCO



          Conceitos Básicos
Existem 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
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
UNIVERSIDADE DE PERNAMBUCO




Entã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     podem   requerer
    ajustes;

  o Saber o quanto, quando, onde ajustar requer
    conhecimentos elementares;



                                                  6
UNIVERSIDADE DE PERNAMBUCO




    A medida que vamos fazendo
alocações na heap o espaço vai se
tornando cada vez mais escasso.
    Fazendo uma analogia seria como
um quarto repleto de coisas dispostas de
qualquer forma onde não se há mais
espaço para se guardar novos objetos...

                                       7
UNIVERSIDADE DE PERNAMBUCO




Qualquer 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 poder
nos ajudar nesta tarefa árdua e
 complicada, que é organizar
             tudo!
                                     9
UNIVERSIDADE DE PERNAMBUCO




O 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, 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
UNIVERSIDADE DE PERNAMBUCO




    É papel dessa rotina
 identificar e reaproveitar os
espaços de memória que não
     são mais utilizados!

                                    12
UNIVERSIDADE DE PERNAMBUCO




              Exemplo
      Para facilitar a compreensão do
assunto vamos considerar um esquema de
alocação dinâmica de espaço de memória,
uma lista ligada como mostra a próxima
figura.



                                       13
UNIVERSIDADE DE PERNAMBUCO



     Esquema de Alocação de
        Memória Dinâmica
Início




                                           ...




                                      14
UNIVERSIDADE DE PERNAMBUCO




     Analisando o código:
      Vamos analisar o trecho de código
abaixo e saber o que acontece quando a
instrução new é invocada:

 Public class Empresa {

 Cliente novoCliente = new Cliente();

 }
                                        15
UNIVERSIDADE DE PERNAMBUCO




     Quando a instrução new é invocada as
seguintes 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
UNIVERSIDADE DE PERNAMBUCO




  E se não houver
espaço suficiente no
       heap?

                                 17
UNIVERSIDADE DE PERNAMBUCO




     Quando, ao processar a instrução
new, no heap não houver memória
suficiente, se executa o Garbage
Collector [3].



                                      18
UNIVERSIDADE DE PERNAMBUCO




Execução do Garbage Collector
• Uma unidade de espaço é considerada ativa ou
  útil quando ela pode ser acessada ou atingida [1].
  Início




                                                       ...




                                                  19
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
UNIVERSIDADE DE PERNAMBUCO




Lista 1




                                            ...




Lista 2




                                            ...



                                       21
UNIVERSIDADE DE PERNAMBUCO



Lista 1




                                            ...



Lista 2                         Lixo



                                            ...




                                       22
UNIVERSIDADE DE PERNAMBUCO




Lista 1




                                            ...



Lista 2




                                            ...



                                       23
UNIVERSIDADE DE PERNAMBUCO




Lista 1



                                                    ...


                                       Lixo!
Lista 2
                            Lixo!

                                                    ...




                                               24
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
UNIVERSIDADE DE PERNAMBUCO




             Exemplo 01
Heap    G E Y H S V B M W Q

Grafo              E         Q        Y

         G         M         W        H

                   B         V        S
                                          26
UNIVERSIDADE DE PERNAMBUCO




                    Exemplo 01
Heap        G E Y H S V B M W Q

Grafo               E        Q          Y

        G   LIXO!
                    M        W          H

                    B        V          S   LIXO!
                                                    27
UNIVERSIDADE DE PERNAMBUCO




      Exemplo 01
   Heap Compactado


G E Y H V B W Q


                        Next Object Pointer
                                         28
UNIVERSIDADE DE PERNAMBUCO




         Exemplo 02

Heap   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
UNIVERSIDADE DE PERNAMBUCO




Grafo
         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
UNIVERSIDADE DE PERNAMBUCO


              Exemplo 02
Grafo
                       LIXO!
        A        B             P         T
        D        C             O         Q
                                                     K
        E        L             M         Y   LIXO!

        F         J            N         W
                                                     Z
        G         I    LIXO!   S         V
LIXO!   H        U             R         X
                                                     31
UNIVERSIDADE DE PERNAMBUCO




                   Exemplo 02

  Heap        A M T L K J E Q V G R U X
Compactado     I   O Z D C F N W B



                                          Next Object
                                            Pointer

                                                        32
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
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
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
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
UNIVERSIDADE DE PERNAMBUCO




Fase 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
UNIVERSIDADE DE PERNAMBUCO




Fase 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
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
UNIVERSIDADE DE PERNAMBUCO




• Vantagens:


  o Não precisa de algoritmo complicados;

  o Pode ser mais rápido que Contagem de
    Referências.



                                            40
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
UNIVERSIDADE DE PERNAMBUCO




Reference 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
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
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
UNIVERSIDADE DE PERNAMBUCO




• Vantagens:

  o Rápido: não precisa varrer o heap inteiro;

  o Pode executar em paralelo            com a
    aplicação.



                                            45
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
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
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, ele
navega pela corrente de referências e copia os
objetos alcançáveis para a área “to”;

3. Quando a cópia é completada, os espaços “to”
e “from” trocam de papel;
                                             48
UNIVERSIDADE DE PERNAMBUCO



Heap Origem: From              Heap Destino: To

       J
       F
       G
       B
       E
       U
       P
       Z
       Q
       W
                                                  49
UNIVERSIDADE DE PERNAMBUCO



Heap Origem: From              Heap Destino: To

       J                                J
       F                                G
       G                                U
       B                                Z
       E                                Q
       U                                W
       P
       Z
       Q
       W
                                                  50
UNIVERSIDADE DE PERNAMBUCO



Heap Destino: To              Heap Origem: From

       J                                J
       F                                G
      G                                 U
      B                                 Z
      E                                 Q
      U                                 W
      P
      Z
      Q
      W
                                                  51
UNIVERSIDADE DE PERNAMBUCO




Vantagens:

  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
UNIVERSIDADE DE PERNAMBUCO




Desvantagens:

  o Aplicação precisa parar;

  o Dobra a necessidade de memória do
    heap;

  o Uso ineficiente de memória.


                                        53
UNIVERSIDADE DE PERNAMBUCO




  Sugestão de Vídeo Sobre o Assunto:
Link:
http://mais.uol.com.br/view/ee0dmzfst8i2/garbagecollector040262D0B93346
?types=A




                                                                   54
UNIVERSIDADE DE PERNAMBUCO



                     Referências
[1] SONG, S. W. Coletor de Lixo (Garbage Collector). Universidade
de são Paulo – IME/USP, 2008. Apostila.

[2] LINS, R. D. Garbage Collection. Universidade Federal de
Pernambuco. 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: Arquitetura
da JVM e Algoritmos de Coleta de Lixo. Disponível em:
http://www.argonavis.com.br/. 2005. Apostila.

Mais conteúdo relacionado

Mais de Mayara Mônica

Cartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaCartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaMayara Mônica
 
Estudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoEstudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoMayara Mônica
 
LZW - Compressão e Descompressão
LZW - Compressão e Descompressão LZW - Compressão e Descompressão
LZW - Compressão e Descompressão Mayara Mônica
 
Questionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareQuestionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareMayara Mônica
 
Questions About Software Testing
Questions About Software TestingQuestions About Software Testing
Questions About Software TestingMayara Mônica
 
Modelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoModelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoMayara Mônica
 
Queues and Hook Functions
Queues and Hook FunctionsQueues and Hook Functions
Queues and Hook FunctionsMayara Mônica
 
Chefia e Liderança / Processo Decisório
Chefia e Liderança / Processo DecisórioChefia e Liderança / Processo Decisório
Chefia e Liderança / Processo DecisórioMayara Mônica
 
Timers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSTimers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSMayara Mônica
 
Ponto Flutuante em MIPS
Ponto Flutuante em MIPSPonto Flutuante em MIPS
Ponto Flutuante em MIPSMayara Mônica
 
Obtenção e Recebimento
Obtenção e RecebimentoObtenção e Recebimento
Obtenção e RecebimentoMayara Mônica
 
Interrupts and the timer
Interrupts and the timerInterrupts and the timer
Interrupts and the timerMayara Mônica
 

Mais de Mayara Mônica (20)

Psicologia na Saúde
Psicologia na SaúdePsicologia na Saúde
Psicologia na Saúde
 
Movimento Body Art
Movimento Body ArtMovimento Body Art
Movimento Body Art
 
Cartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaCartilha Educativa sobre Bioética
Cartilha Educativa sobre Bioética
 
Estudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoEstudo Sobre o Músculo Liso
Estudo Sobre o Músculo Liso
 
Tipologia Textual
Tipologia TextualTipologia Textual
Tipologia Textual
 
Comando Traceroute
Comando TracerouteComando Traceroute
Comando Traceroute
 
LZW - Compressão e Descompressão
LZW - Compressão e Descompressão LZW - Compressão e Descompressão
LZW - Compressão e Descompressão
 
MaDKit
MaDKitMaDKit
MaDKit
 
UPPAAL
UPPAALUPPAAL
UPPAAL
 
Questionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareQuestionário Sobre Teste de Software
Questionário Sobre Teste de Software
 
Questions About Software Testing
Questions About Software TestingQuestions About Software Testing
Questions About Software Testing
 
Modelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoModelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário Eletrônico
 
Queues and Hook Functions
Queues and Hook FunctionsQueues and Hook Functions
Queues and Hook Functions
 
Chefia e Liderança / Processo Decisório
Chefia e Liderança / Processo DecisórioChefia e Liderança / Processo Decisório
Chefia e Liderança / Processo Decisório
 
Timers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSTimers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOS
 
Ponto Flutuante em MIPS
Ponto Flutuante em MIPSPonto Flutuante em MIPS
Ponto Flutuante em MIPS
 
Obtenção e Recebimento
Obtenção e RecebimentoObtenção e Recebimento
Obtenção e Recebimento
 
Tutorial do Dropbox
Tutorial do DropboxTutorial do Dropbox
Tutorial do Dropbox
 
Interrupts and the timer
Interrupts and the timerInterrupts and the timer
Interrupts and the timer
 
Presentation
PresentationPresentation
Presentation
 

Último

PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosLucianoPrado15
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLidianePaulaValezi
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2Maria Teresa Thomaz
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxLeonardoGabriel65
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 

Último (20)

PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 

Garbage Collector

  • 2. UNIVERSIDADE DE PERNAMBUCO Roteiro 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ásicos Existem 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 PERNAMBUCO Entã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 fazendo alocações na heap o espaço vai se tornando cada vez mais escasso. Fazendo uma analogia seria como um quarto repleto de coisas dispostas de qualquer forma onde não se há mais espaço para se guardar novos objetos... 7
  • 8. UNIVERSIDADE DE PERNAMBUCO Qualquer 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 poder nos ajudar nesta tarefa árdua e complicada, que é organizar tudo! 9
  • 10. UNIVERSIDADE DE PERNAMBUCO O 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 os espaços de memória que não são mais utilizados! 12
  • 13. UNIVERSIDADE DE PERNAMBUCO Exemplo Para facilitar a compreensão do assunto vamos considerar um esquema de alocação dinâmica de espaço de memória, uma lista ligada como mostra a próxima figura. 13
  • 14. UNIVERSIDADE DE PERNAMBUCO Esquema de Alocação de Memória Dinâmica Início ... 14
  • 15. UNIVERSIDADE DE PERNAMBUCO Analisando o código: Vamos analisar o trecho de código abaixo e saber o que acontece quando a instrução new é invocada: Public class Empresa { Cliente novoCliente = new Cliente(); } 15
  • 16. UNIVERSIDADE DE PERNAMBUCO Quando a instrução new é invocada as seguintes 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 houver espaço suficiente no heap? 17
  • 18. UNIVERSIDADE DE PERNAMBUCO Quando, ao processar a instrução new, no heap não houver memória suficiente, se executa o Garbage Collector [3]. 18
  • 19. UNIVERSIDADE DE PERNAMBUCO Execuçã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 PERNAMBUCO Lista 1 ... Lista 2 ... 21
  • 22. UNIVERSIDADE DE PERNAMBUCO Lista 1 ... Lista 2 Lixo ... 22
  • 23. UNIVERSIDADE DE PERNAMBUCO Lista 1 ... Lista 2 ... 23
  • 24. UNIVERSIDADE DE PERNAMBUCO Lista 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 01 Heap G E Y H S V B M W Q Grafo E Q Y G M W H B V S 26
  • 27. UNIVERSIDADE DE PERNAMBUCO Exemplo 01 Heap G E Y H S V B M W Q Grafo E Q Y G LIXO! M W H B V S LIXO! 27
  • 28. UNIVERSIDADE DE PERNAMBUCO Exemplo 01 Heap Compactado G E Y H V B W Q Next Object Pointer 28
  • 29. UNIVERSIDADE DE PERNAMBUCO Exemplo 02 Heap 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 PERNAMBUCO Grafo 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 02 Grafo LIXO! A B P T D C O Q K E L M Y LIXO! F J N W Z G I LIXO! S V LIXO! H U R X 31
  • 32. UNIVERSIDADE DE PERNAMBUCO Exemplo 02 Heap A M T L K J E Q V G R U X Compactado 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 PERNAMBUCO Fase 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 PERNAMBUCO Fase 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 PERNAMBUCO Reference 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, ele navega pela corrente de referências e copia os objetos 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 PERNAMBUCO Heap Origem: From Heap Destino: To J F G B E U P Z Q W 49
  • 50. UNIVERSIDADE DE PERNAMBUCO Heap 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 PERNAMBUCO Heap 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 PERNAMBUCO Vantagens: 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 PERNAMBUCO Desvantagens: 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). Universidade de são Paulo – IME/USP, 2008. Apostila. [2] LINS, R. D. Garbage Collection. Universidade Federal de Pernambuco. 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: Arquitetura da JVM e Algoritmos de Coleta de Lixo. Disponível em: http://www.argonavis.com.br/. 2005. Apostila.