Download - Tunning jvm em java 8

Transcript
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