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

JVM por debaixo dos panos

Ana Neri
April 10, 2020

JVM por debaixo dos panos

Será abordado todo o funcionamento da JVM de um jeito que você nunca viu. JVM é uma das melhores funcionalidades do Java, e nela rodam diversas linguagens novas (Kotlin, Groovy, Scala, JRuby, JPyhton). Então é importante saber o que acontece ao se compilar um programa, desde o momento da criação de algum método, até a visualização também abordando suas otimizações.

Link da live: https://www.youtube.com/watch?v=QGdIxQ6t4xI

Ana Neri

April 10, 2020
Tweet

More Decks by Ana Neri

Other Decks in Technology

Transcript

  1. Agenda (); Processos de compilação O que é JVM Arquitetura

    da JVM Tuning & GC Gerenciamento de memória Java Mission Control Novidades da JVM no Java 14
  2. Processo de compilação C 0101010101 0101010011 0100101010 0101010101 0101010101 0100101010

    0101010101 0101010011 0100101010 0101010101 0101010101 0100101010
  3. O que é JVM? JVM ≠ JDK ≠ JRE JDK

    (Java Development Kit), e o kit de desenvolvimento do java, que tem responsabilidade de compilar código em .java para bytecode
  4. O que é JVM? JVM ≠ JDK ≠ JRE JVM

    (Java Virtual Machine), máquina virtual do java responsável por executar o arquivo em .byetcode
  5. O que é JVM? JVM ≠ JDK ≠ JRE JRE

    (Java Runtime Environment), ambiente de execução Java, na qual fornece bibliotecas do Java para o JDK compilar seu código e a JVM rodar seu programa
  6. O que é JVM? JDK Java Virtual Machine JRE Bibliotecas

    básicas (API do java) Ferramentas de execução Ferramentas de desenvolvimento Adaptado de: https://dicasdejava.com.br/qual-a-diferenca-entre-jdk-jre-e-jvm/
  7. Arquitetura da JVM 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
  8. EDEN SO SO1 TENURED PERMANENT Memória Nova (Young Generation) Espaço

    de sobrevivencia Memória Velha Garbage Collector
  9. Tunning & GC Tuning, podemos ter como otimizações que acontecem

    em diversas áreas da JVM, tudo aquilo que fazemos além de ergonomic, também conhecido como ajustes. Não existe uma definição fixa, pois tudo depende da jvm que se está usando, o cenário e onde está inserido
  10. Tunning & GC GC, ou Garbage Collector é o coletor

    de "lixo" da JVM, coleta os objetos nao referenciados para liberar espaço dentro da memória No garbage colletor temos otimizações e parâmetros que facilitam sua coleta, como:
  11. Tunning & GC Opção Descrição -Xmx Limita o tamanho da

    heap que a JVM pode alocar e executar no IntelliJ. O valor padrão depende da plataforma, se você estiver enfrentando lentidão você pode querer aumentar esse valor, por exemplo, definir ele pra 2048 megabytes, que ficará -Xmx2048m . -Xms Especifica a memória inicial alocada pela JVM para executar o IntelliJ. O valor padrão depende da plataforma que você estiver usando, geralmente é definido para cerca de metade da memória máxima permitida (-Xmx), por exemplo, -Xms1024m . -XX : NewRatio Especifica a razão entre o tamanho da Young Generation e Old Generation. Na maioria dos casos, recomenda-se uma ratio entre 2 e 4. Isso definirá o tamanho da young generation para ser 1/2 a 1/4 da old generation correspondente, o que é até bom quando você muitas vezes está trabalhando num projeto e em apenas um arquivo de cada vez. No entanto, se você esta constantemente abrindo arquivos novos, e alternando entre vários projetos, você pode precisar aumentar a young generation. Neste caso, tente a configuração --XX:NewRaio=1, que tornará a young generation tão grande quanto a Old generation, permitindo que seus objetos criados permaneçam na young generation por mais tempo
  12. Tunning & GC Garbage Collector Tunning Aplicação de perfil de

    software, Ajuste do servidor e JVM, Hardware e SO certos, Código com boas práticas, Utilizar os parâmetros ideais da JVM, -XX: + UseParallelGC se você tiver multiprocessadores
  13. Tunning & GC Garbage Collector Tunning DICAS Não esqueça de

    ajustar a Perm Generation Evite a criação prematura de objetos e também a criação de objetos sem referência, ambos devem estar o mais próximo do seu local de uso
  14. Tunning & GC Garbage Collector Tunning DICAS StringBuffer ao invés

    de String concat Referências suaves para vazamento de memória Configure os parâmetros -Xms e -Xmx com o mesmo valor sempre que possível
  15. Java Mission Control O que é? Java Mission Control ou

    JMC é uma ferramenta da Oracle, mas especificamente no Oracle OpenJDK desde o Java 7
  16. Java Mission Control O que é? JMC tem o propósito

    de monitorar várias JVMs em tempo de execução, e fazer análise de arquivo de despejo no Java Flight Recorder. Usado muito em grandes empresas.
  17. Java Mission Control Beleza, mas o que isso pode trazer

    de beneficio para minha pequena aplicação? Usar essa ferramenta da Oracle nas suas aplicações, pode fazer usar mais ainda otimizações da JVM, para quando aplicadas em grandes escala não serem impossíveis e desconhecidas
  18. Novidades de JVM no Java 14 Hotspost/ GC O Z

    Garbage Collector (ZGC) agora está disponível como um recurso experimental no Windows e MacOS. Para ativá-lo, use os sinalizadores da JVM -XX:+UnlockExperimentalVMOptions -XX:+UseZGC.
  19. Novidades de JVM no Java 14 Mensagem detalhada em NullPointerExeptions

    -XX:+ShowCodeDetailsInExceptionMessages Se a opção estiver configurada, ao encontrar um ponteiro nulo, a JVM analisará o programa para determinar qual referência foi null e, em seguida, fornecerá os detalhes como parte de NullPointerException.getMessage().