1 / 44

COLETA DE LIXO NA JVM

COLETA DE LIXO NA JVM. Adriano da Silva Castro. Introdução. Gerenciamento de memória : técnicas de manutenção de memória ; Objetivos alocação de blocos de endereçamento para os processos em execução ; Liberação de blocos não mais utilizados ;

maille
Download Presentation

COLETA DE LIXO NA JVM

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. COLETA DE LIXO NA JVM Adriano da Silva Castro

  2. Introdução • Gerenciamento de memória: técnicas de manutenção de memória; • Objetivos • alocação de blocos de endereçamento para os processosemexecução; • Liberação de blocosnão mais utilizados; • Crescente demanda de memórianasaplicações mais recentes; • Crescentenecessidade de gerenciamento de memóriasatisfatório;

  3. Introdução • Gerenciamentorealizadopelodesenvolvedor? • Gerenciar a alocação e liberação da memória; • Nada confiável; • Dificulta a redigibilidade; • Solução: Coleta de Lixo

  4. IntroduçãoObjetivos do Trabalho • Estudo dos mecanismos de coleta atuais; • Mecanismosimplementados na JVM; • Desempenho dos mecanismos; • Foco no algoritmoMark-sweeppresente na JVM; • Dificuldadesem sua otimização; • Desenvolvimento de umsimulador de heap; • Comparações JVM – Simulador;

  5. IntroduçãoColetores de Lixo • Automatizam o processo de limpeza da memória; • Parte integralde muitasdaslinguagens a partir dos anos 60; • Reduzem tempo de desenvolvimento de aplicações; • Ações transparentes; • Idealmente, nãodevemcausarimpactos no desempenho da aplicação;

  6. IntroduçãoConceitos • Objetos; • Heap • Trecho de memóriaalocadopeloprocesso; • Alocaçãodinâmica de blocos de dados; • Arraycontínuo de slots; • Relaçãoobjeto-heap • Objetossãomantidosnela! • Acessoaleatório; Objetonão mais usado pelaaplicaçãopresente na heap: LIXO

  7. Estratégias de Coleta • ReferenceCounting (ContagemporReferência) • Contador para cadaobjeto; • Número de ponteiros que apontam para o objeto; • Auxílio do compilador • Nova instância incremento do contador; • Objetolixo: contador = 0; • Principal Limitação: detecção de referênciascíclicas;

  8. Estratégias de Coleta • Tracing(Rastreamento) • Relações entre objetos: grafo; • Percurso do grafo a partir dos nós-raíz; • Perda de desempenho; • Pausas na aplicaçãoduranteprocesso de rastreamento; • Mesmocom as perdas, foi a opçãoescolhida pela JVM.

  9. Estratégias de Coleta • Mark-sweep • Forma mais básica de algoritmos de rastreamento; • Introduzido na linguagem LISP; • Fase de Marcação (mark) • Percorretodos os nós a partir dos nós-raíz; • Marca cadaobjetoalcançado; • Ao final, heapcontémobjetosmarcados e nãomarcados; • Nãomarcados = Nãopercorridos = LIXO; • Fase de Varredura (sweep) • Percorre a heaplinearmenteliberandotodos os objetosnão-marcados; • Fragmentação;

  10. Estratégias de Coleta

  11. Estratégias de Coleta • CopyingCollectors(ColetoresporCópia) • Duasregiões de memória(heapdividida); • Regiãoativa a inativa; • Execução: • Buscaporobjetosnão mais alcançáveis; • Copia objetosalcançáveis para a nova região de memória; • Troca entre as regiõesativa e inativa; • Reduzfragmentação;

  12. Estratégias de Coleta

  13. Estratégias de Coleta • Mark-sweepgerafragmentação; • Coletoresporcópianecessitam de umafase para verificar quais objetosaindaestãoemuso; • Solução: • Aplicartécnicas de cópiaaoMark-sweep Mark-compact

  14. Coleta de Lixo na JVM

  15. Coleta de Lixo na JVM • Distintasimplementaçõesvisamdistintosperfis de aplicação; • Coletoresexatos • Garantem que todos os objetosnão mais usadosserãocoletados; • Usuáriopodeescolherqualcoletorusará;

  16. Coleta de Lixo na JVM • Generational Collection (Coletas porGeração); • Gerações • GeraçãoJovem • Objetosrecém-criados; • Tempo de vida curto; • Constante alocação de Blocos; • Maiornúmero de coletas; • Éden; • Espaço de Sobreviventes (origem e destino);

  17. Coleta de Lixo na JVM • Gerações (continuação) • GeraçãoJovem • Quanto mais coletas umobjetosobrevive, maioressão as chances desseobjetosobreviverporainda mais tempo; • Éden  Espaço de Sobreviventes; • Origem  Destino;

  18. Coleta de Lixo na JVM • Gerações (continuação) • GeraçãoAntiga • Objetossobreviventes; • Promovidos; • Região“amadurecida”; • Objetos de vida longa; • Espaçocontíguo (diferente da geraçãojovem); • Geração Permanente • Objetos de tempo de vida permanente;

  19. Coleta de Lixo na JVM

  20. Coleta de Lixo na JVMO Mark-sweepna JVM • Adaptação do Mark-sweep para o Mark-compact; • Implementado em 4 fases: • Marcação e reciclagem; • Computação dos novos endereços de memória dos objetos vivos; • Ajuste dos ponteiros; • Compactação;

  21. Coleta de Lixo na JVMO Mark-sweepna JVM • Mapa de bits • Bit de marcação em um objeto: vivo ou morto; • Mapas de bits podem ser listas lineares, por exemplo; • Centralização das informações a respeito do estado dos objetos; • JVM implementa Mapa de bits como forma de manter um sumário dos objetos vivos presentes na heap; • Lazy Sweeping • “Varredura preguiçosa”

  22. Desempenho • Coleta dos tempos de execução do coletor Mark-sweep implementado pela JVM; • Marcação no código da máquina virtual; • Ciclos de Clock • Foco nas 4 fases; • 1ª fase é a mais custosa;

  23. Desempenho • Lista Encadeada; • Benchmark GCBench; • Arrays de vida longa; • Árvores binárias; • Java Grande Forum Benchmark Suite • Operações simples; • Kernels; • Aplicações de Larga Escala

  24. Desempenho

  25. Desempenho

  26. Desempenho

  27. Desempenho

  28. Simulador

  29. Simulador • Aplicação em Java; • Mark-sweep, mark-compact, mark-lazy-sweep; • Comparação dos custos na JVM com os custos no Simulador; • Simplificação dos algoritmos; • Tentativa de replicação dos benchmarks;

  30. Simulador • Objetos: Oops; • Bit de marcação; • Heap • Estrutura estática (array de tamanho n); • Singleton; • Coletores • Interface (abstração do coletor); • Medição de tempo;

  31. Simulador • Scripts • Interface (abstração de scripts); • Benchmarks; • Exemplo: instanciação de objetos em forma de lista encadeada; • GUI • Componente gráfico para chamar scripts e coletores; • Herança entre o componente visual da Heap com JPanel;

  32. Simulador

  33. Simulador

  34. Simulador • Mark-compact concorrente • Utiliza threads para copiar os objetos vivos; • Realiza testes durante a cópia para não conflitar com a instanciação em paralelo; • Mark-lazy-sweep • Manipulação de mapas de bits; • Realizam a marcação apenas na primeira vez; • Varredura se baseia no mapa de bits gerado pela última fase de marcação; • Nova fase de marcação só é realizada quando o mapa está cheio; • Alocação sob demanda;

  35. SimulaçõesLista Encadeada

  36. SimulaçõesÁrvoresBinárias

  37. SimulaçõesInstanciações de Objeto

  38. Conclusões • Custo entre fasesdiferentes; • Diferenças na implementação na JVM/Simulador; • Padrões de projeto na JVM; • Aplicações (prevalecem as listas encadeadas): • Mark-compact Concorrente • Possibilidade de se trabalharcomconcorrência; • Mark-lazy-sweep • Pequenas pausas sãoaceitáveis;

  39. Conclusões • Aplicações onde prevalecemestruturasem forma de árvorebinária: • Mark-compact concorrente; • Fase de marcação simples; • Nãohánecessidade de manipulação de mapas de bits; • Mark-lazy-sweepapresentoubaixafragmentação • Alocaçãosob-demanda;

  40. Conclusões • Aplicaçõescomum grande número de instanciações de objetos • Mark-lazy-sweep; • Custo se resume à manipulação do mapa de bits; • Mark-compactconcorrente demanda gerenciamentocomplexo de threads; • Cópiaexecutadaemparalelo;

  41. ConsideraçõesFinais • Idéiainicial: propormelhorias nos algoritmos de coleta na JVM; • Mark-sweep Mark-lazy-sweep; • Dificuldade (ou atémesmoimpossibilidade) devido à fase 4 (compactação); • Necessidade de melhorias na primeirafase; • Dificuldade de otimizaçãopelofato do Mark-sweeptrabalharcombits de marcação vivo/morto;

  42. ConsideraçõesFinais • Mark-compact • Padrão (algoritmoporcópia); • Execuçãoemparalelo; • Implementaçõeseficientes; • Poucoespaço para melhorias; • Simulador • Comparações entre os algoritmos presentes; • Maior custo na quarta fase; • Complexidade das estruturas na JVM; • Implementação simplificada na JVM poderia otimizar o processo;

  43. ConsideraçõesFinais • Após as simulações • Algoritmo concorrente muito mais eficiente que o padrão; • Possibilidade ou não de se trabalharcomconcorrênciapode se tornarumempecilho; • Tempo total da coleta do não-concorrente é maior! • Cálculosefetuados para a gravaçãocorreta dos objetos no concorrente; • Mark-compactconcorrente e Mark-lazy-sweepsãoainda as melhoresopções para a maioria dos cenáriosvistos no trabalho;

  44. TrabalhosFuturos • Otimizarprocesso de marcação dos objetos na JVM; • Melhorias no Simulador para melhorreflexão do comportamento na JVM; • Procurar novas maneiras de se realizar coletas de lixo a serem, inicialmenteaplicadas no Simulador;

More Related