SlideShare uma empresa Scribd logo
http://slidesha.re/1kQU0Yg @BR_LuanCestari
Tunning JVM em Java 8
Guia 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/Home
https://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

Mais conteúdo relacionado

PDF
React Hooks
PPTX
Mocking Test - ThinkUp! - Abril/2017
PPTX
Behavior-Driven Development (BDD) - Abril/2017
PDF
Tunning da jvm dos comandos às configurações
PPTX
TDD e BDD - Developers-SP - Abril/2017
PDF
Java não é tão difícil quanto parece
PPTX
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
PPTX
.NET Core e Testes de Unidade - Visual Studio Summit 2017
React Hooks
Mocking Test - ThinkUp! - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017
Tunning da jvm dos comandos às configurações
TDD e BDD - Developers-SP - Abril/2017
Java não é tão difícil quanto parece
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017

Mais procurados (8)

PPTX
Apresentação final do aplicativo Passe Fácil - Tópicos Especiais
PDF
ISA11 - Gustavo Moura - UX Fails
PDF
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
PDF
5 motivos para usar JNoSQL - Fernando Boaglio - TDC2018
PDF
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
PPT
BDD JBehave
PDF
Do protótipo ao produto: técnicas que fazem sentido
PPTX
Jclouds jug vale
Apresentação final do aplicativo Passe Fácil - Tópicos Especiais
ISA11 - Gustavo Moura - UX Fails
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
5 motivos para usar JNoSQL - Fernando Boaglio - TDC2018
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
BDD JBehave
Do protótipo ao produto: técnicas que fazem sentido
Jclouds jug vale
Anúncio

Mais de Luan Cestari (7)

ODP
Getting Started with SOA using SwitchYard
ODP
Indo para as nuvens mais rápido e fácil com Docker
ODP
Lightblue project
ODP
Open stack
PDF
Big data
PDF
Open stack
PDF
Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...
Getting Started with SOA using SwitchYard
Indo para as nuvens mais rápido e fácil com Docker
Lightblue project
Open stack
Big data
Open stack
Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...
Anúncio

Último (19)

PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
COBITxITIL-Entenda as diferença em uso governança TI
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula04-Academia Heri- Tecnologia Geral 2025
Apple Pippin Uma breve introdução. - David Glotz
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula 18 - Manipulacao De Arquivos python
Processos na gestão de transportes, TM100 Col18
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Otimizador de planejamento e execução no SAP Transportation Management, TM120...

Tunning jvm em java 8