0
Gerenciamento de Memóriapela Máquina Virtual Java         Prof Adriano Teixeira de Souza         Fasul – Faculdade Sul Bra...
Gerenciamento de Memória • Alocação de recursos (RAM, cache, virtual, swap,   buffer) • Reciclagem • Fragmentação • Recolo...
Gerenciamento de Memória Alocação de Recursos • Objetos, estruturas de dados • Blocos de memória • De onde buscar ?    RA...
Gerenciamento de Memória Reciclagem • Colocar um bloco usado como livre • Apontar para null • Depende do tipo de gerenciador
Gerenciamento de Memória Fragmentação • Blocos não contiguos • Memória disponível espalhado entre pequenos   blocos de mem...
Gerenciamento de Memória     • Fragmentação20/08/2009   Copyright: Claudio Miranda - Evento Escola Regional de Informática...
Gerenciamento de Memória Recolocação • Mover dados entre áreas de memória • Colocar os dados mais acessados em estrutura  ...
Gerenciamento de Memória Compactação • Evitar fragmentação • Remover espaços não usados de objetos   contiguos • Reorganiz...
Gerenciamento de Memória
Gerenciamento de Memória Gerenciamento Automático • Quando o programador não precisa se preocupar   com as tarefas anterio...
Heap       HEAP       -Xmx2g
Heap • Larga área de memória que armazena objetos e   suas referências • É dividido em gerações    Geração Young (ou New ...
Heap       YOUNG           OLD-XX:MaxNewSize=256m                  -Xmx2g
Heap • Geração Young    Onde novos objetos são alocados    A alocação de memória é de curta duração    Objetos que não ...
Heap       YOUNG           OLD-XX:MaxNewSize=256m                  -Xmx2g
Heap • Geração Old    Onde permanecem objetos cujas referências     sobreviveram ao GC da área Young    Objetos de longa...
Heap       YOUNG              OLD         Perm-XX:MaxNewSize=256m       -XX:MaxPermSize=128m                 -Xmx2g
Heap • Geração Permanente    Não sofre ação de GC    Armazena a estrutura das classes    Armazena informações de reflex...
Heap        Eden   From Eden To Eden               (survivor 1) (survivor 2) Criação de objetos
Heap       Eden   From Eden   To Eden Ocorre um GC na área Young
Heap       Eden   From Eden   To Eden Ocorre outro GC na área Young
Heap        To Eden             Old Outro GC ocorre, então objetos que contém  referência são transportados para a área Old
Heap • Na área de memóra Old ocorrem    Redimensionamento (-Xms ≠ -Xmx)    Compactação (desfragmentação)    Larga área ...
Algoritmos de GC • Algoritmos diferentes para cada geração • Escolhas entre consumo de CPU e pausas   maiores
Algoritmos de GC •   Serial •   Parallel •   Stop the world •   Concurrent •   Compacting •   Non compacting •   Copying
Algoritmos de GC     • Serial     • Parallel
Algoritmos de GC • Stop the world    Todas as threads são pausadas    Longas pausas • Concurrent    Tarefas de GC efetu...
Algoritmos de GC • Compacting    Realocar todos os objetos e liberar memória • Non Compacting    Apenas libera os blocos...
Algoritmos de GC • Atualmente os algoritmos mais usados são     Paralelo       • UseParallelGC       • UseParallelOldGC  ...
Dicas   • Não chame System.gc      organize e reuse seus objetos   • Ao criar estruturas de dados, informe o     tamanho ...
Dicas   • Em estruturas grandes apontar para null,     após o uso   • Configurar os parametros de memória     -Xmx -Xms -X...
Dicas   • Em estruturas grandes apontar para null,     após o uso   • Configurar os parametros de memória     -Xmx -Xms -X...
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Upcoming SlideShare
Loading in...5
×

Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java

1,293

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,293
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
52
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java"

  1. 1. Gerenciamento de Memóriapela Máquina Virtual Java Prof Adriano Teixeira de Souza Fasul – Faculdade Sul Brasil
  2. 2. Gerenciamento de Memória • Alocação de recursos (RAM, cache, virtual, swap, buffer) • Reciclagem • Fragmentação • Recolocação • Compactação • Gerenciamento automático
  3. 3. 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
  4. 4. Gerenciamento de Memória Reciclagem • Colocar um bloco usado como livre • Apontar para null • Depende do tipo de gerenciador
  5. 5. 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
  6. 6. Gerenciamento de Memória • Fragmentação20/08/2009 Copyright: Claudio Miranda - Evento Escola Regional de Informática do Centro Oeste 1 10
  7. 7. 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
  8. 8. 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
  9. 9. Gerenciamento de Memória
  10. 10. 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
  11. 11. Heap HEAP -Xmx2g
  12. 12. 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
  13. 13. Heap YOUNG OLD-XX:MaxNewSize=256m -Xmx2g
  14. 14. 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; }
  15. 15. Heap YOUNG OLD-XX:MaxNewSize=256m -Xmx2g
  16. 16. 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();
  17. 17. Heap YOUNG OLD Perm-XX:MaxNewSize=256m -XX:MaxPermSize=128m -Xmx2g
  18. 18. Heap • Geração Permanente  Não sofre ação de GC  Armazena a estrutura das classes  Armazena informações de reflexão  Não participa do heap (-Xmx)
  19. 19. Heap Eden From Eden To Eden (survivor 1) (survivor 2) Criação de objetos
  20. 20. Heap Eden From Eden To Eden Ocorre um GC na área Young
  21. 21. Heap Eden From Eden To Eden Ocorre outro GC na área Young
  22. 22. Heap To Eden Old Outro GC ocorre, então objetos que contém referência são transportados para a área Old
  23. 23. 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
  24. 24. Algoritmos de GC • Algoritmos diferentes para cada geração • Escolhas entre consumo de CPU e pausas maiores
  25. 25. Algoritmos de GC • Serial • Parallel • Stop the world • Concurrent • Compacting • Non compacting • Copying
  26. 26. Algoritmos de GC • Serial • Parallel
  27. 27. 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
  28. 28. 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
  29. 29. Algoritmos de GC • Atualmente os algoritmos mais usados são  Paralelo • UseParallelGC • UseParallelOldGC  Concorrente • UseConcMarkSweepGC • Um recente algoritmo foi lançado  G1 • Concorrente + paralelo
  30. 30. 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
  31. 31. Dicas • Em estruturas grandes apontar para null, após o uso • 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 •
  32. 32. Dicas • Em estruturas grandes apontar para null, após o uso • 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 •
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×