Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Memória e Garbage Collection na JVM

458 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Memória e Garbage Collection na JVM

  1. 1. Eduardo Bohrer@nbluishttp://about.me/nbluisMemória e GC na JVM
  2. 2. Garbage collectionPresente nas linguagens modernasRemove automaticamente objetos não maisutilizadosPara entender o GC precisamos entender amemória e vice e versa
  3. 3. Garbage collectionReference countingMark and sweepGenerational copying
  4. 4. Reference countingMais simples1 faseRemove objetos que não tem mais referênciasExemplo: Objective-c
  5. 5. Mark and sweepMais comum2 fasesMarca todos os objetos que tem referênciasRemove todos os objetos não marcadosExemplo: Ruby
  6. 6. Generational copyingMais rebuscadoMultiplas fasesExemplo: Java
  7. 7. Generational copyingHipótese das gerações95% dos objetos criados tem uma vidaextremamente curta, os outros 5%normalmente tem uma vida bastante longa
  8. 8. Generational copyingMemória dividida em 2 partes“Young memory”“Old memory”
  9. 9. Young memoryOnde todos os objetos são criadosQuando enche, o GC procura por objetos queainda tem referências e move para a “Oldmemory”Tudo o que sobrar é descartado/ignorado
  10. 10. Old memoryCarrega os objetos “sobreviventes”Não é afetado pelo “minor collect”Quando enche, obriga um “major collect” maisconhecido como “full gc”Nesse caso utilizando Mark and sweep
  11. 11. BenefíciosAguarda o acúmulo do “young” para fazer gcDiminui a quantidade de coletasDiminui a fragmentação da memóriaO minor collect roda em uma pequena parte damemória, diminuindo o overheadOpera apenas sobre os 5% que sobraram e nãosobre os 95% que serão ignorados
  12. 12. Generational e a JVMA JVM extende a estratégia das geraçõesNa JVM existem dois tipos de memóriaHeap - Memória da aplicaçãoNon-Heap - Memória da JVM
  13. 13. JVM HeapOnde ficam todos os objetos do aplicativoOnde ocorre o famoso“java.lang.OutOfMemoryError: Java heap space”
  14. 14. JVM Non-HeapMais conhecida como PermGenOnde a JVM guarda Classes, Metodos e oStringPoolOnde ocorre o também famoso“java.lang.OutOfMemoryError: PermGen space”
  15. 15. JVM HeapSegue a estratégia “generational copying”Porém com a memória dividida em 3 partesEden (young)SurvivorTenured (old)
  16. 16. JConsole$JAVA_HOME/bin/jconsole

×