tunning jvm em java 8
Post on 12-Jan-2015
269 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
top related