Introdução Java virtual machine

Embed Size (px)

Text of Introdução Java virtual machine

  1. 1. Java Virtual Machine Bruno Coan
  2. 2. Agenda Introduo a JVM Parmetros Garbage Collection Just in time compiler JIT ClassLoader
  3. 3. Java Virtual Machine O que ?
  4. 4. Java Code (.java) JAVAC compiler JVM JVM Byte Code (.class) JVM Windows Linux Mac
  5. 5. Distribuies HotSpot Oracle/Sun (base) JRockit - Oracle/BEA J9 IBM.
  6. 6. Scala JVM Byte Code Clojure JRuby
  7. 7. Linguagens que rodam na JVM
  8. 8. Parmetros O que so? Para que servem?
  9. 9. Parmetros -Xmxs1024m Configurao de memria Heap -Xmx1024m Configurao de memria Heap -XX:MaxPermSize=128m Configurao da Permanent Generation -verbose:gc Habilita log do garbage Collector -Xint Desabilita o JIT
  10. 10. Garbage Collection
  11. 11. Mark-And-Sweep Mark Sweep
  12. 12. Hiptese das Geraes 95% dos objetos tem vida extremamente curta. O restante costuma ter vida longa.
  13. 13. Generational Copying Young Generation Old Generation
  14. 14. HotSpot Eden Survivor 0 Survivor 1 Young Ternured Minnor Collect Major Collect
  15. 15. Mark-And-Sweep + Compact
  16. 16. Diviso de Memria - JVM
  17. 17. Collector Serial
  18. 18. Collector Parallel
  19. 19. Collector Concurrent
  20. 20. Garbage First G1
  21. 21. Ergonomics A partir java 1.5; O algoritmo de Garbage Collection; O tamanho da memria heap; O compilador de tempo de execuo.
  22. 22. Just in Time Compiler - JIT Java 1.1 (Symantec) Compilao dinmica Heurstica
  23. 23. Cliente Habilitado atravs do parmetro client; Foco em inicializao rpida; Deixa de fazer certas otimizaes para economizar memria;
  24. 24. Servidor Habilitado atravs do parmetro server; Performance a longo prazo; Compilao mais agressiva;
  25. 25. Recomendao Programe baseado em boas prticas; O JIT faz o resto;
  26. 26. Carregamento de classes Loading -Localiza o arquivo (.class) e carrega seu ByteCode; Linking Verification -Verifica se o ByteCode est correto; Preparation Prepara estrutura para acomodar mtodos, atributos; Resolving Carrega todas as dependncias referenciadas pela classe; Initializing Blocos estticos so executados e atributos estticos so inicializados;
  27. 27. ClassLoaders BootStrap nico que no possui pai; Carrega classes do rt.jar (java.lang); Extension Tem BootStrap como pai; Carrega classes da pasta lib/ext; Application Tem Extension como pai; Carrega classes do CLASSPATH; BootStrap Classloader Extension Classloader Application Classloader
  28. 28. ClassLoaders Container BootStrap Classloader Extension Classloader Application Classloader Container ClassLoader WebApp1 ClassLoader WebApp2 ClassLoader
  29. 29. ClassLoader Hell NoSuchMethodError; ClassCastException; Java 1.6 incluiu API JAXB 2.0
  30. 30. Endorsed Configurado pelo parmetro -Djava.endorsed.dirs=; Jars carredos antes do diretrio ext ; Maneira de dizer para JVM que voc confia em determinado jar;