View
269
Download
1
Category
Preview:
DESCRIPTION
TDC 2014 SP - Nesta apresentação você vai descobrir mais detalhes de como é que a JVM funciona, dando enfase em entender e aprofundar seus conhecimentos na questão de Garbage Collector (GC) e assuntos relacionados, como o gerenciamento de memória, threads, etc. Existem ferramentas disponíveis das próprias JVMs como também terceiras para podemos encontrar os melhores parâmetros e tirar o máximo da JVM como também identificarmos problemas no próprio código sendo executado. Links: http://onthejvm.blogspot.com.br/2013/05/java-gc-tuning-for-high-frequency.html http://blog.mgm-tp.com/2013/03/garbage-collection-tuning/ http://jvm-options.tech.xebia.fr/? https://dl.dropboxusercontent.com/u/1704203/HotSpot%20JVM%20GC%20options%20cheatsheet%20-%20A4%201%2B2.pdf http://stas-blogspot.blogspot.com.br/2011/07/most-complete-list-of-xx-options-for.html http://reins.altervista.org/java/A_Collection_of_JVM_Options_MP.html http://www.pingtimeout.fr/2012/05/jvm-options-complete-reference.html http://www.ourdailycodes.com/2013/09/inside-java-jvm-memory-structure-3.html http://www.ourdailycodes.com/2013/09/inside-java-jvm-memory-structure-2.html http://www.ourdailycodes.com/2013/08/inside-java-jvm-memory-structure.html http://www.petefreitag.com/articles/gctuning/ https://github.com/mariusaeriksen/heapster https://code.google.com/p/gperftools/?redir=1 https://www.youtube.com/watch?v=szvHghWyuoQ - twitter tools https://www.youtube.com/watch?v=Yg6_ulhwLw0 - twitter tools graph https://www.youtube.com/watch?feature=player_detailpage&v=zwBLgQ1_WuE#t=3135 - vmware tunning jvm http://www.slideshare.net/aszegedi/everything-i-ever-learned-about-jvm-performance-tuning-twitter http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html http://www.brendangregg.com/linuxperf.html
Citation preview
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Tunning JVM em Java 8Guia do Mochileiro que não pode faltar
TDC 2014 SP - Luan Cestari
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Ressalva/Disclaimer
● ESTA APRESENTAÇÃO REFLETE A OPINIÕES E PROPOSTAS PESSOAIS DO AUTOR SOBRE O TEMA, PODENDO NÃO REFLETIR NECESSARIAMENTE A OPINIÂO / PONTO DE VISTA DE QUAISQUER ORGANIZAÇÃO/EMPRESA LIGA OU NÃO COM O AUTOR
● THIS PRESENTATION REFLECTS AUTHOR'S PERSONAL OPINIONS AND IDEAS ON THE TOPIC AND MAY NOT REFLECT NECESSARILY THE OPINION/ VIEWPOINT OF ANY ORGANIZATION / COMPANY WITH/WITHOUT RELATIONSHIP WITH THE AUTHOR.
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Introdução | Batepapo
http://slidesha.re/1kQU0Yg @BR_LuanCestari
O que veremos
● OpenJDK● Overview sobre desempenho● Principais mudanças JVM e Tunning
○ Overview da Arquitetura de memória OpenJDK○ Principais mudanças na versão 8○ Top-Down e Botton-Up profiling e tunning
http://slidesha.re/1kQU0Yg @BR_LuanCestari
O que NÃO veremos (infelizmente)
● Muitos detalhes das diversas formas de tunning e profiling○ Motivo: tempo =(
http://slidesha.re/1kQU0Yg @BR_LuanCestari
OpenJDK
● JCP (Java Community Process)● JSR (Java Specification Requests)● JEP (JDK Enhancement Proposals)
https://java.net/projects/adoptajsr/pages/Homehttps://www.jcp.org/en/home/index
http://slidesha.re/1kQU0Yg @BR_LuanCestari
OpenJDK
● Comunidades ○ SouJava○ JUGs
● Participe =D
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Desempenho
● Tempo de resposta● Logs
○ Erros de memória■ OutOfMemoryError, Leaks, GC, crash
○ Uso de recursos ■ CPU, Disco, Rede, Banco de dados, etc
○ Concorrência
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Arquitetura de memória OpenJDK
Metaspace
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Principais mudanças na versão 8
● Começando pelos arquivos gerados .class:○ A versão major do .class foi para 52 (0x34 hex)
■ ohhh =)○ Magic number continua o mesmo (CA FE BA BE)○ mudanças de estrutura por causa das JSR-292,
JSR-308 e JSR-335■ JSR 335: Lambda Expressions■ JSR 308:Type Annotations and the Checker
Framework ■ JSR 292: Supporting Dynamically Typed
Languages on the Java (Da Vinci Machine project and InvokeDynamic)
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Mudanças | Parâmetros e arquitetura JVM
● Flags para JVM usar o Advanced Encryption Standard (AES) da intel○ -XX:+UseAES -XX:+UseAESIntrinsics
● Remoção da Permgen (e inclução da Metaspace)○ -XX:MaxMetaspaceSize
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Mudanças | Compact Profiles
● JEP 161: Compact Profiles○ JVM pode rodar e compilar usar diferentes perfis
que minimizam memória○ http://docs.oracle.
com/javase/8/docs/technotes/guides/compactprofiles/
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Mudanças | Ferramentas no JDK
● jdeps○ Análise de dependências
■ libraries e interno(-jdkinternals)● Diagnóstico remoto com JMX● Novas opções no jarsigner ● Nova java man page
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Mudanças | Outros
● Security○ Algoritmos mais fortes para criptografia e cifragem○ melhora na parte de entropia de geração dos
números randomicos
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Tunning e Profiling
● Top-Down / Bottom-Up
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Tunning e Profiling| Bottom-up
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Tunning e Profiling| Bottom-up
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Tunning e Profiling| Bottom-up
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Tunning e Profiling| Top-Down
● Mesma análise das versões anteriores○ Uso do jvisualvm / jconsole para análise○ Uso das memórias
■ GC Log (usando -verbosegc -XX:PrintGCDetails )
■ Frequência e tempo de GC■ Algoritmo de GC
○ Alocação de memória ■ LargePages (-XX:LargePageSizeInBytes=4m )
○ Demais opções JVM○ Thread Dump (jstack)○ Heap Dump (jmap -dump ...)○ Etc
http://slidesha.re/1kQU0Yg @BR_LuanCestari
OpenJDK sempre melhorando!
● Exemplo no update 8u40○ JEP 208: Java Packager Improvements ○ JEP 156: G1 GC: Reduce need for full GCs
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Futuro
● Twitter● Ferramentas de análise da JVM
○ Baixíssimo uso de CPU e memory footprint○ Triggers○ Sample e contínuo○ etc
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Muito Obrigado!
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Dúvidas?
http://slidesha.re/1kQU0Yg@BR_LuanCestari
Recommended