SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Gerenciamento de Memória
pela Maquina Virtual Java
              Claudio Miranda
           Summa Technologies
          claudio@summa.com.br
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
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
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
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
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
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
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
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
Gerenciamento de Memória
     • Fragmentação




01/09/2009   Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1   10
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
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
Gerenciamento de Memória




01/09/2009   Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1   13
Gerenciamento de Memória




01/09/2009   Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1   14
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
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
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
Heap




                                HEAP

                                       -Xmx2g


01/09/2009   Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1   18
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
Heap




             YOUNG                                         OLD




-XX:MaxNewSize=256m
                  -Xmx2g
01/09/2009      Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1   20
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
Heap




             YOUNG                                         OLD




-XX:MaxNewSize=256m
                  -Xmx2g
01/09/2009      Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1   22
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
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
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
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
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
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
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
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
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
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
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
Algoritmos de GC


             • Serial



             • Parallel




01/09/2009       Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1   34
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
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
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
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
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
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
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
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

Weitere ähnliche Inhalte

Empfohlen

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Empfohlen (20)

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 

Gerenciamento de Memória pela JVM

  • 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