Gerenciamento de Memória pela JVM

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Gerenciamento de Memória pela JVM - Presentation Transcript

    1. Gerenciamento de Memória pela Maquina Virtual Java Claudio Miranda Summa Technologies claudio@summa.com.br
    2. Objetivo Explicar os conceitos de gerenciamento de memória pela Máquina Virtual Java (JVM), Garbage Collector, Algoritmos de GC e Dicas de programação. 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 2
    3. Quem é Claudio Miranda Consultor Sênior pela Summa-Tech Programador open source Ganhador do prêmio Glassfish Awards 2008 Veste as camisas de arquiteto, consultor programador. Palestrante em eventos no Brasil e exterior desde 2001 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 3
    4. Agenda • Gerenciamento de Memória • Garbage Collector em Java • Algoritmos de Garbage Collector • Dicas 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 4
    5. Agenda • Gerenciamento de Memória • Garbage Collector em Java • Algoritmos de Garbage Collector • Dicas 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 5
    6. Gerenciamento de Memória • Alocação de recursos (RAM, cache, virtual, swap, buffer) • Reciclagem • Fragmentação • Recolocação • Compactação • Gerenciamento automático 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 6
    7. Gerenciamento de Memória Alocação de Recursos • Objetos, estruturas de dados • Blocos de memória • De onde buscar ?  RAM fisica, cache, buffer, swap, shared • Depende da desalocação eficiente 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 7
    8. Gerenciamento de Memória Reciclagem • Colocar um bloco usado como livre • Apontar para null • Depende do tipo de gerenciador 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 8
    9. Gerenciamento de Memória Fragmentação • Blocos não contiguos • Memória disponível espalhado entre pequenos blocos de memória • É necessário reorganizar e compactar a memória usada e disponível 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 9
    10. Gerenciamento de Memória • Fragmentação 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 10
    11. Gerenciamento de Memória Recolocação • Mover dados entre áreas de memória • Colocar os dados mais acessados em estrutura otimizadas (MRU, LRU, etc.) • Atualizar as referências 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 11
    12. Gerenciamento de Memória Compactação • Evitar fragmentação • Remover espaços não usados de objetos contiguos • Reorganização da memória usada e não usada 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 12
    13. Gerenciamento de Memória 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 13
    14. Gerenciamento de Memória 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 14
    15. Gerenciamento de Memória Gerenciamento Automático • Quando o programador não precisa se preocupar com as tarefas anteriores • Atividades baseadas em padrões de uso da memória • Também chamado de Garbage Collector 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 15
    16. Gerenciamento de Memória Gerenciamento Automático • Java como plataforma, várias linguagens  JPython, JRuby, Rhino, Scala, Groovy • Presente em outras linguagens  Lisp, Eiffel, Haskell, Scheme 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 16
    17. Agenda • Gerenciamento de Memória • Garbage Collector • Algoritmos de Garbage Collector • Dicas 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 17
    18. Heap HEAP -Xmx2g 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 18
    19. Heap • Larga área de memória que armazena objetos e suas referências • É dividido em gerações  Geração Young (ou New ou Eden)  Geração Old (Tenured)  Geração Permanente (PermGem) • O GC ocorre apenas quando a geração não tem espaço para alocação de novos objetos • Automaticamente remove objetos da memória que não possuem referência • Possui diferentes algoritmos de GC 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 19
    20. Heap YOUNG OLD -XX:MaxNewSize=256m -Xmx2g 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 20
    21. Heap • Geração Young  Onde novos objetos são alocados  A alocação de memória é de curta duração  Objetos que não possuem referência são removidos pelo GC  GC ocorre com mais frequência  Tamanho pequeno private String name = “Bruce Lee”; public Result consumidor(Long id) { Result r = processar(id); return r; } 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 21
    22. Heap YOUNG OLD -XX:MaxNewSize=256m -Xmx2g 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 22
    23. Heap • Geração Old  Onde permanecem objetos cujas referências sobreviveram ao GC da área Young  Objetos de longa duração  GC ocorre com menor frequência  Tamanho superior à área Young  Exemplos: • Atributos estáticos, final, Singleton public static String name = “Bruce Lee”; public final Map cache = new HashMap(); private static Loader singleton = new Loader(); 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 23
    24. Heap YOUNG OLD Perm -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Xmx2g 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 24
    25. Heap • Geração Permanente  Pouca ação de GC  Armazena a estrutura das classes  Armazena informações de reflexão  Objetos de origem nativa (JNI) Não participa do heap (-Xmx) 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 25
    26. Heap Eden From Eden To Eden (survivor 1) (survivor 2) Criação de objetos 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 26
    27. Heap Eden From Eden To Eden Ocorre um GC na área Young 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 27
    28. Heap Eden From Eden To Eden Ocorre outro GC na área Young 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 28
    29. Heap To Eden Old Outro GC ocorre, então objetos que contém referência são transportados para a área Old 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 29
    30. Heap • Na área de memóra Old ocorrem Redimensionamento (-Xms ≠ -Xmx)  Compactação (desfragmentação)  Larga área de memória para ser monitorada  GC ocorre de acordo com a política do algorítmo Old 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 30
    31. Agenda • Gerenciamento de Memória • Garbage Collector em Java • Algoritmos de Garbage Collector • Dicas 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 31
    32. Algoritmos de GC • Algoritmos diferentes para cada geração • Escolhas entre consumo de CPU e pausas maiores 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 32
    33. Algoritmos de GC • Serial • Parallel • Stop the world • Concurrent • Compacting • Non compacting • Copying 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 33
    34. Algoritmos de GC • Serial • Parallel 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 34
    35. Algoritmos de GC • Stop the world  Todas as threads são pausadas  Longas pausas • Concurrent  Tarefas de GC efetuadas enquanto a aplicação funciona  Maior consumo de CPU  Menor pausa 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 35
    36. Algoritmos de GC • Compacting  Realocar todos os objetos e liberar memória • Non Compacting  Apenas libera os blocos de memória • Copying  Copia os objetos para qualquer área de memória não prioritária  Libera o espaço 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 36
    37. Algoritmos de GC • Atualmente os algoritmos mais usados são  Paralelo • UseParallelGC • UseParallelOldGC  Concorrente • UseConcMarkSweepGC • Um recente algoritmo foi lançado  G1 • Concorrente + paralelo 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 37
    38. Agenda • Gerenciamento de Memória • Garbage Collector em Java • Algoritmos de Garbage Collector • Dicas 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 38
    39. Dicas • Não chame System.gc  organize e reuse seus objetos • Ao criar estruturas de dados, informe o tamanho  new ArrayList(330); • Use Weak References • Não abuse da concatenação de Strings  Use StringBuilder • Use static quando necessário • Política de limpeza de caches 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 39
    40. Dicas • Não abusar de ThreadLocal • Use APIs de alocação direta de memória  ByteBuffer (NIO) • Reutilizar Strings • Em estruturas grandes apontar para null, após o uso  Collections, Arrays 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 40
    41. Dicas • Configurar os parametros de memória -Xmx -Xms -Xss • Escolher apropriadamente o algoritmo da geração • Faça testes de performance • Use ferramentas para auxílio de diagnóstico  Profiler  Monitoramento • 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 41
    42. Muito Obrigado Claudio Miranda claudio@claudius.com.br http://www.summa.com.br http://www.soujava.org.br http://www.claudius.com.br 01/09/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 42

    + Claudio MirandaClaudio Miranda, 3 months ago

    custom

    312 views, 0 favs, 1 embeds more stats

    Palestra efetuada por Claudio Miranda, na Universid more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 312
      • 255 on SlideShare
      • 57 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 11
    Most viewed embeds
    • 57 views on http://www.javace.org

    more

    All embeds
    • 57 views on http://www.javace.org

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories