SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Apresentação final do aplicativo Passe Fácil - Tópicos Especiais
Apresentação final do aplicativo Passe Fácil - Tópicos EspeciaisApresentação final do aplicativo Passe Fácil - Tópicos Especiais
Apresentação final do aplicativo Passe Fácil - Tópicos EspeciaisPlínio Pereira
 
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...Joao Galdino Mello de Souza
 
5 motivos para usar JNoSQL - Fernando Boaglio - TDC2018
5 motivos para usar JNoSQL - Fernando Boaglio - TDC20185 motivos para usar JNoSQL - Fernando Boaglio - TDC2018
5 motivos para usar JNoSQL - Fernando Boaglio - TDC2018Fernando Boaglio
 
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineJavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineAndré Willik Valenti
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehaveIsmael
 
Do protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentidoDo protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentidoBarbara Wolff Dick
 

Was ist angesagt? (8)

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

Ähnlich wie JVM Tunning Java 8

Indo para as nuvens mais rápido e fácil com Docker
Indo para as nuvens mais rápido e fácil com DockerIndo para as nuvens mais rápido e fácil com Docker
Indo para as nuvens mais rápido e fácil com DockerLuan Cestari
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkBruno Oliveira
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseOziel Moreira Neto
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Renato Groff
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?Fabio Janiszevski
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Mapa de aprendizado Front End
Mapa de aprendizado Front EndMapa de aprendizado Front End
Mapa de aprendizado Front EndCaio Vaccaro
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Renato Groff
 
Criando Websites a Jato com Django - Marcos Daniel Petry
Criando Websites a Jato com Django - Marcos Daniel PetryCriando Websites a Jato com Django - Marcos Daniel Petry
Criando Websites a Jato com Django - Marcos Daniel PetryTchelinux
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03Ale Uehara
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Renato Groff
 

Ähnlich wie JVM Tunning Java 8 (20)

Indo para as nuvens mais rápido e fácil com Docker
Indo para as nuvens mais rápido e fácil com DockerIndo para as nuvens mais rápido e fácil com Docker
Indo para as nuvens mais rápido e fácil com Docker
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java Enterprise
 
Vraptor 3
Vraptor 3Vraptor 3
Vraptor 3
 
Spring Roo
Spring RooSpring Roo
Spring Roo
 
Java pode ser_hipster
Java pode ser_hipsterJava pode ser_hipster
Java pode ser_hipster
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
SQLAlchemy - Desenvolvendo uma aplicação com Python
SQLAlchemy - Desenvolvendo uma aplicação com Python SQLAlchemy - Desenvolvendo uma aplicação com Python
SQLAlchemy - Desenvolvendo uma aplicação com Python
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Mapa de aprendizado Front End
Mapa de aprendizado Front EndMapa de aprendizado Front End
Mapa de aprendizado Front End
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016
 
Criando Websites a Jato com Django - Marcos Daniel Petry
Criando Websites a Jato com Django - Marcos Daniel PetryCriando Websites a Jato com Django - Marcos Daniel Petry
Criando Websites a Jato com Django - Marcos Daniel Petry
 
Web Services RESTful
Web Services RESTfulWeb Services RESTful
Web Services RESTful
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Crystal
CrystalCrystal
Crystal
 
Spring boot
Spring bootSpring boot
Spring boot
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
 

Mehr von Luan Cestari

Getting Started with SOA using SwitchYard
Getting Started with SOA using SwitchYardGetting Started with SOA using SwitchYard
Getting Started with SOA using SwitchYardLuan Cestari
 
Lightblue project
Lightblue project Lightblue project
Lightblue project Luan Cestari
 
Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...
Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...
Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...Luan Cestari
 

Mehr von Luan Cestari (6)

Getting Started with SOA using SwitchYard
Getting Started with SOA using SwitchYardGetting Started with SOA using SwitchYard
Getting Started with SOA using SwitchYard
 
Lightblue project
Lightblue project Lightblue project
Lightblue project
 
Open stack
Open stackOpen stack
Open stack
 
Big data
Big dataBig data
Big data
 
Open stack
Open stackOpen stack
Open stack
 
Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...
Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...
Latinoware 2013 - OpenStack RDO - A walkthrough by the Open Source Cloud Comp...
 

JVM Tunning Java 8