Adriano da Silva Castro

Slides:



Advertisements
Apresentações semelhantes
Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Advertisements

Parte 1: Organização de Computadores
VERIFICAÇÃO FORMAL DE BLOCOS COMPLEXOS
Estruturas de Dados Marcio Gonçalves.
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Sistemas Operacionais
Gerenciamento de memória
Sistemas Operacionais II - Sistemas de Arquivos -.
Coleta de resíduos. Sumário Resíduos Coleta de resíduos Contador de referências Marcação e varredura Parada e cópia Marcação e compactação Gerenciamento.
CISC e RISC.
Simulação Física de Corpos Rígidos com Detecção e Reação à Colisões
Memória.
Arquitetura de Computadores
Linguagens de Programação
Sistemas Operacionais Turmas MBI1 e NBI2. Prof: Marcelo Mendes.
Aula 2 Aspectos Preliminares
Listas Encadeadas.
Gerência de Memória.
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
REDUNDÂNCIA POR SOFTWARE
Sistemas Operacionais Gerenciamento de Memória
Unidade 1-1 Processos e Threads
Sistemas Operacionais
Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.
Sistemas Distribuídos
Desenvolvimento de Jogos e Entretenimento Digital
Gerência de Memória Virtual
Arquitetura de computadores
Unidade 2 - Parte 1 Programação Concorrente
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Sistemas Especialistas
Ambiente de Execução - Rotinas
Orientação a Objetos Parte I
Algoritmos e Estruturas de Dados I – Ponteiros
Sistemas Operacionais
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
SISTEMAS OPERACIONAIS I
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Sistemas Operacionais
Sistemas Operacionais
SISTEMAS OPERACIONAIS I
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Processos.
Bruno C. Bourbon Jarbas J. de O. Júnior {bcb, cin.ufpe.br
Testes de Software AULA 03 Eduardo Silvestri
Sistemas Operacionais
Back-End Compilação aula-11-back-end.pdf.
Performance Java Flávia Falcão |
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Flávia Falcão Java Performance Flávia Falcão
Gerenciamento de Memória
GARBAGE COLLECTOR 1 UNIVERSIDADE FEDERAL DO PARÁ - UFPA.
Performance Java Flávia Falcão |
A High Performance Java Middleware with a Real Application HUERT, Fabrice; CAROMEL, Denis; Bal, Henri E. Supercomputing 2004 Trabalho desenvolvido por:
Performance Java Flávia Falcão |
Gerenciamento de Memória - Capítulo 7 - Sistemas Operacionais Prof. Dr. José Carlos Becceneri Luciana Sêda Cardoso.
Jobson Ronan Padrões GoF Jobson Ronan
CloudSim Um framework para modelagem e simulação de infraestrutura e serviços de Computação em Nuvem.
Gerenciamento de Memória Sistemas Recentes
Bruno Iran Ferreira Maciel
Sistemas Operacionais
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Gerenciamento de Memória Capítulo Gerenciamento básico de memória 3.2 Troca de processos.
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
Gerência de Memória. Memória Considerações: Recurso caro e escasso; Programas só executam se estiverem na memória principal; Quanto mais processos residentes.
Mauricio Barbosa e Castro.  A construção de um produto multimídia se faz através de um projeto.  O escopo e a complexidade de um projeto de multimídia.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Transcrição da apresentação:

Adriano da Silva Castro 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; Crescente demanda de memória nas aplicações mais recentes; Crescente necessidade de gerenciamento de memória satisfatório;

Coleta de Lixo Introdução Solução: Gerenciamento realizado pelo desenvolvedor? Gerenciar a alocação e liberação da memória; Nada confiável; Dificulta a redigibilidade; Solução: Coleta de Lixo

Introdução Objetivos do Trabalho Estudo dos mecanismos de coleta atuais; Mecanismos implementados na JVM; Desempenho dos mecanismos; Foco no algoritmo Mark-sweep presente na JVM; Dificuldades em sua otimização; Desenvolvimento de um simulador de heap; Comparações JVM – Simulador;

Introdução Coletores de Lixo Automatizam o processo de limpeza da memória; Parte integral de muitas das linguagens a partir dos anos 60; Reduzem tempo de desenvolvimento de aplicações; Ações transparentes; Idealmente, não devem causar impactos no desempenho da aplicação;

Objeto não mais usado pela aplicação presente na heap: LIXO Introdução Conceitos Objetos; Heap Trecho de memória alocado pelo processo; Alocação dinâmica de blocos de dados; Array contínuo de slots; Relação objeto-heap Objetos são mantidos nela! Acesso aleatório; Objeto não mais usado pela aplicação presente na heap: LIXO

Estratégias de Coleta Reference Counting (Contagem por Referência) Contador para cada objeto; Número de ponteiros que apontam para o objeto; Auxílio do compilador Nova instância  incremento do contador; Objeto lixo: contador = 0; Principal Limitação: detecção de referências cíclicas;

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ção durante processo de rastreamento; Mesmo com as perdas, foi a opção escolhida pela JVM.

Estratégias de Coleta Mark-sweep Forma mais básica de algoritmos de rastreamento; Introduzido na linguagem LISP; Fase de Marcação (mark) Percorre todos os nós a partir dos nós-raíz; Marca cada objeto alcançado; Ao final, heap contém objetos marcados e não marcados; Não marcados = Não percorridos = LIXO; Fase de Varredura (sweep) Percorre a heap linearmente liberando todos os objetos não-marcados; Fragmentação;

Estratégias de Coleta

Estratégias de Coleta Copying Collectors (Coletores por Cópia) Duas regiões de memória (heap dividida); Região ativa a inativa; Execução: Busca por objetos não mais alcançáveis; Copia objetos alcançáveis para a nova região de memória; Troca entre as regiões ativa e inativa; Reduz fragmentação;

Estratégias de Coleta

Mark-compact Estratégias de Coleta Mark-sweep gera fragmentação; Coletores por cópia necessitam de uma fase para verificar quais objetos ainda estão em uso; Solução: Aplicar técnicas de cópia ao Mark-sweep Mark-compact

Coleta de Lixo na JVM

Coleta de Lixo na JVM Distintas implementações visam distintos perfis de aplicação; Coletores exatos Garantem que todos os objetos não mais usados serão coletados; Usuário pode escolher qual coletor usará;

Coleta de Lixo na JVM Generational Collection (Coletas por Geração); Gerações Geração Jovem Objetos recém-criados; Tempo de vida curto; Constante alocação de Blocos; Maior número de coletas; Éden; Espaço de Sobreviventes (origem e destino);

Coleta de Lixo na JVM Gerações (continuação) Geração Jovem Quanto mais coletas um objeto sobrevive, maiores são as chances desse objeto sobreviver por ainda mais tempo; Éden  Espaço de Sobreviventes; Origem  Destino;

Coleta de Lixo na JVM Gerações (continuação) Geração Antiga Objetos sobreviventes; Promovidos; Região “amadurecida”; Objetos de vida longa; Espaço contíguo (diferente da geração jovem); Geração Permanente Objetos de tempo de vida permanente;

Coleta de Lixo na JVM

Coleta de Lixo na JVM O Mark-sweep na 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;

Coleta de Lixo na JVM O Mark-sweep na 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”

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;

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

Desempenho

Desempenho

Desempenho

Desempenho

Simulador

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;

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

Simulador Scripts GUI 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;

Simulador

Simulador

Simulador Mark-compact concorrente Mark-lazy-sweep 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;

Simulações Lista Encadeada

Simulações Árvores Binárias

Simulações Instanciações de Objeto

Conclusões Custo entre fases diferentes; 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 trabalhar com concorrência; Mark-lazy-sweep Pequenas pausas são aceitáveis;

Conclusões Aplicações onde prevalecem estruturas em forma de árvore binária: Mark-compact concorrente; Fase de marcação simples; Não há necessidade de manipulação de mapas de bits; Mark-lazy-sweep apresentou baixa fragmentação Alocação sob-demanda;

Conclusões Aplicações com um grande número de instanciações de objetos Mark-lazy-sweep; Custo se resume à manipulação do mapa de bits; Mark-compact concorrente demanda gerenciamento complexo de threads; Cópia executada em paralelo;

Considerações Finais Idéia inicial: propor melhorias nos algoritmos de coleta na JVM; Mark-sweep  Mark-lazy-sweep; Dificuldade (ou até mesmo impossibilidade) devido à fase 4 (compactação); Necessidade de melhorias na primeira fase; Dificuldade de otimização pelo fato do Mark-sweep trabalhar com bits de marcação vivo/morto;

Considerações Finais Mark-compact Simulador Padrão (algoritmo por cópia); Execução em paralelo; Implementações eficientes; Pouco espaç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;

Considerações Finais Após as simulações Algoritmo concorrente muito mais eficiente que o padrão; Possibilidade ou não de se trabalhar com concorrência pode se tornar um empecilho; Tempo total da coleta do não-concorrente é maior! Cálculos efetuados para a gravação correta dos objetos no concorrente; Mark-compact concorrente e Mark-lazy-sweep são ainda as melhores opções para a maioria dos cenários vistos no trabalho;

Trabalhos Futuros Otimizar processo de marcação dos objetos na JVM; Melhorias no Simulador para melhor reflexão do comportamento na JVM; Procurar novas maneiras de se realizar coletas de lixo a serem, inicialmente aplicadas no Simulador;