Tunning jvm em java 8

23
http://slidesha.re/1kQU0Yg @BR_LuanCestari Tunning JVM em Java 8 Guia do Mochileiro que não pode faltar TDC 2014 SP - Luan Cestari

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

Transcript of Tunning jvm em java 8

Page 1: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

Tunning JVM em Java 8Guia do Mochileiro que não pode faltar

TDC 2014 SP - Luan Cestari

Page 2: Tunning jvm em java 8

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.

Page 3: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

Introdução | Batepapo

Page 4: Tunning jvm em java 8

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

Page 5: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

O que NÃO veremos (infelizmente)

● Muitos detalhes das diversas formas de tunning e profiling○ Motivo: tempo =(

Page 6: Tunning jvm em java 8

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

Page 7: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

OpenJDK

● Comunidades ○ SouJava○ JUGs

● Participe =D

Page 8: Tunning jvm em java 8

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

Page 9: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

Arquitetura de memória OpenJDK

Metaspace

Page 10: Tunning jvm em java 8

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)

Page 11: Tunning jvm em java 8

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

Page 12: Tunning jvm em java 8

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/

Page 13: Tunning jvm em java 8

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

Page 14: Tunning jvm em java 8

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

Page 15: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

Tunning e Profiling

● Top-Down / Bottom-Up

Page 16: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

Tunning e Profiling| Bottom-up

Page 17: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

Tunning e Profiling| Bottom-up

Page 18: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

Tunning e Profiling| Bottom-up

Page 19: Tunning jvm em java 8

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

Page 20: Tunning jvm em java 8

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

Page 21: Tunning jvm em java 8

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

Page 22: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

Muito Obrigado!

Page 23: Tunning jvm em java 8

http://slidesha.re/1kQU0Yg @BR_LuanCestari

Dúvidas?

http://slidesha.re/1kQU0Yg@BR_LuanCestari