Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JVM por debaixo dos panos V1

Ana Neri
August 23, 2019

JVM por debaixo dos panos V1

Ana Neri

August 23, 2019
Tweet

More Decks by Ana Neri

Other Decks in Technology

Transcript

  1. Sobre mim Ana Beatriz ( ); Analista Desenvolvedora Java, Groovy

    & Grails – AirOn Group Exemplo Exemplo TRABALHO FORMAÇÃO Graduanda em Análise e Desenvolvimento de sistemas - Bandtec anabneri.github.io OFF TOPIC Voluntária Co-Organizadora UnicornTech
  2. Agenda da apresentação O que é Java? Aprender JVM porque?

    Arquitetura Memória Problemas de memória Compiladores Modularização Prática JVM Pacotes úteis
  3. O que é Java? Processo de compilamento das linguagens antigas

    Assembly 0101010101 0101010011 0100101010 0101010101 0101010101 0100101010
  4. O que é Java? Processo de compilamento das linguagens antigas

    Assembly 0101010101 0101010011 0100101010 0101010101 0101010101 0100101010
  5. O que é Java? Processo de compilamento das linguagem C

    C 0101010101 0101010011 0100101010 0101010101 0101010101 0100101010 0101010101 0101010011 0100101010 0101010101 0101010101 0100101010
  6. O que é Java? Processo de compilamento das linguagem C

    C 0101010101 0101010011 0100101010 0101010101 0101010101 0100101010 0101010101 0101010011 0100101010 0101010101 0101010101 0100101010
  7. O que é Java? O processo de compilação foi inspirado

    em C, porém com uma melhoradinha, rs JavaC JVM JAVA BYTECODE
  8. Aprender Jvm porque? - É importante saber as ferramentas que

    se trabalha - Você que é desenvolvedor ter conhecimentos mais tangíveis - Saber como tudo no Java se conecta - Ter argumentos pra quando alguém fala que Java é lerdo (brincadeira rs) - Performance do seu dia a dia, pois quanto mais você sabe sobre a ferramenta mais terá casos de uso
  9. Arquitetura JVM Estrutura Class loader subsystem Method area Heap Java

    stacks PC Registers Native Method Stacks Execution engine Native Method Interface Native Methods libraries Runtime data areas Class files
  10. Class loader subsystem Method area Heap Java stacks PC Registers

    Native Method Stacks Execution engine Native Method Interface Native Methods libraries Runtime data areas Class files
  11. Arquitetura JVM Tipos de dados Primitive Types boolean Reference Types

    Numeric Types Floating-Point Types returnAddress class type Interface types array types Integral Types float double byte short int long char reference
  12. Vamos entender a organização da memória EDEN FROM TO Young

    Generation (NEW) Permanet Generation Survivor Tenured (OLD) heap non-heap
  13. Memória - GRUPO HEAP E NON-HEAP - HEAP – área

    da memória onde os objetos (com semântica e referência) de uma aplicação são armazaneados. Gerenciado pelo Garbage Collector. NON-HEAP (STACK) – Objetos curtos e de pouca duração são armazanados na memória non-heap. É uma área de tamanho fixo de memória, em que semelhante a uma pilha os dados precisam ser desempilhados.
  14. Memória GARBAGE COLLECTOR - O GC é o processo de

    executar o gerenciamento automático das memórias - Quando o código é convertido a bytecode e executado na JVM os objetos são criados no heap e quando esses objetos eventualmente não são mais necessários o GC exclui pra liberar memória - É um processo automático - Desenvolvedores ainda precisam aprender a lidar com o erro “Out.OfMemoryError”
  15. Memória GARBAGE COLLECTOR – ALGORITMO DA HIPÓTESE DAS GERAÇÕES EDEN

    SO SO1 TENURED PERMANENT Young Generation (NEW) Survivor space Tenured (OLD) Permanet Generation
  16. Problemas de memória EDEN FROM TO VIRTUAL VIRTUAL VIRTUAL -

    O espaço total dísponivel para o redimensionamento é a diferença entre o limite superior e inferior - Este espaço é alocado e identificado como “virtual” - Se os valores forem iguais não há redimensionamento Perm Gen Survivor Tenured (OLD) heap
  17. SOLUÇÃO: aumentar os limites inferiores e superiores da memória. Aplicações

    grandes demais para o tamanho da Heap fornecida Motivos para estouro de Memória SOLUÇÃO: aumento de processamento Uma aplicação que não está de acordo com boas práticas
  18. Compiladores JIT – Just In Time - Revolução da JVM

    - Faz compilação de modo dinâmico - JIT verifica a quantidade de vezes que o método esta sendo executado - Otimização do modo JIT é o que faz a JVM cada vez mais rápida Tem como depurar sua jvm usando os XX
  19. Compiladores HotSpot JVM - O que é? - HotSpot utiliza

    a ideia de que apenas 10% do código é executado em 90% do tempo - Isso traz otimizações - Os dados são obtidos direto da execução real do programa
  20. DON’T BE AFRAID - ESTUDE - PRATIQUE - CONTRIBUA COM

    A COMUNIDADE - FOCAR EM BOAS PRÁTICAS - ESTUDE A BASE - NÃO SEJA SOBERBO (OU UM BOSTA) + ==
  21. DON’T BE AFRAID OS RESULTADOS VÊEM A LONGO PRAZO, PRATICAR

    TUDO ISSO DESDE O INÍCIO VAI IR TE TORNANDO UMA PESSOA PROGRAMADORA MELHOR!
  22. Referências • https://pt.stackoverflow.com/questions/36741/heap-de-mem%C3%B3ria-java • https://www.baeldung.com/java-stack-heap • Livro: Mundo Java Efetivo

    – A casa do Código • https://pt.wikipedia.org/wiki/HotSpot • https://medium.com/devs-javagirl/jvm-ca89e3f79c44 - JVM | Otimizações/ Lilian Lima • https://blog.mandic.com.br/artigos/java-garbage-collection-melhores-praticas-tutoriais- e-muito-mais/