Successfully reported this slideshow.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Memória e Garbage Collection na JVM

  1. 1. Eduardo Bohrer @nbluis http://about.me/nbluis Memória e GC na JVM
  2. 2. Garbage collection Presente nas linguagens modernas Remove automaticamente objetos não mais utilizados Para entender o GC precisamos entender a memória e vice e versa
  3. 3. Garbage collection Reference counting Mark and sweep Generational copying
  4. 4. Reference counting Mais simples 1 fase Remove objetos que não tem mais referências Exemplo: Objective-c
  5. 5. Mark and sweep Mais comum 2 fases Marca todos os objetos que tem referências Remove todos os objetos não marcados Exemplo: Ruby
  6. 6. Generational copying Mais rebuscado Multiplas fases Exemplo: Java
  7. 7. Generational copying Hipótese das gerações 95% dos objetos criados tem uma vida extremamente curta, os outros 5% normalmente tem uma vida bastante longa
  8. 8. Generational copying Memória dividida em 2 partes “Young memory” “Old memory”
  9. 9. Young memory Onde todos os objetos são criados Quando enche, o GC procura por objetos que ainda tem referências e move para a “Old memory” Tudo o que sobrar é descartado/ignorado
  10. 10. Old memory Carrega os objetos “sobreviventes” Não é afetado pelo “minor collect” Quando enche, obriga um “major collect” mais conhecido como “full gc” Nesse caso utilizando Mark and sweep
  11. 11. Benefícios Aguarda o acúmulo do “young” para fazer gc Diminui a quantidade de coletas Diminui a fragmentação da memória O minor collect roda em uma pequena parte da memória, diminuindo o overhead Opera apenas sobre os 5% que sobraram e não sobre os 95% que serão ignorados
  12. 12. Generational e a JVM A JVM extende a estratégia das gerações Na JVM existem dois tipos de memória Heap - Memória da aplicação Non-Heap - Memória da JVM
  13. 13. JVM Heap Onde ficam todos os objetos do aplicativo Onde ocorre o famoso “java.lang.OutOfMemoryError: Java heap space”
  14. 14. JVM Non-Heap Mais conhecida como PermGen Onde a JVM guarda Classes, Metodos e o StringPool Onde ocorre o também famoso “java.lang.OutOfMemoryError: PermGen space”
  15. 15. JVM Heap Segue a estratégia “generational copying” Porém com a memória dividida em 3 partes Eden (young) Survivor Tenured (old)
  16. 16. JConsole $JAVA_HOME/bin/jconsole

×