SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
Alta performance com Java 
pedrina.alisson@gmail.com
Agradecimentos
1 –Visão Geral sobre Performance 
2 –Plataforma Java 
-compilador 
-garbagecollector 
3 –Boas práticas de Design para 
uso de Memória 
4 -Prática 
Conteúdo
Desempenho 
Gargalo 
Escalabilidade 
Performance?
-Online TransactionProcess(OLTP) 
-Batch 
-Latência-Time-response-Think time-Throughput (tps -ops) 
Vamos observar a performance
Hardware: cpu, memória, storagee network 
Configuração de recursos 
externos: midleware, bd, loadbalance, etc 
Fatores para performance
-Cópia exata 
-Subconjunto com poucos servidores 
mas com especificação , hardware 
e camadas iguais 
O ambiente para os testes
Teoria das filas 
Probabilidade 
Auxilia
Plataforma: 
-compilador (JIT) 
-garbagecollector 
“Nada melhora mais a performance do que um código bem escrito !!!” 
E agora o Gargalo está no Java?
JVM arquitetura
-Inline 
-ScapeAnalysis(GlobalScape–ArgScape–NoScape) 
-Lockelision(e.gStringBuffere Vetor) 
-Jitwatch 
Otimizações
Garbage Collector
● 
GC Promoções
-Serial GC (-XX:+UseSerialGC) 
-ParallelGC (-XX:+UseParallelGC/ UseParallelOldGC) 
-ConcurrentMark & SweepGC ("CMS") (-XX:+UseConcMarkSweepGC) 
-GarbageFirst(G1) GC (-XX:+UseG1GC) 
Garbage Collector
Serial e Paralelo YGC
CMS e Paralelo FGC
● 
G1
● 
Mapa mental
-jcmd, jmap, jhate jstat 
-jvisualvm 
-MemoryAnalyzerTools (mat) 
-javap 
Profile e análise do Heap
JVM memória
Uma referência
Tempo X Espaço
-strong 
-weak 
(metadados, classloader) -soft 
(cache) -phantom(ex. De imagem grande, corrige finalize(), evita ressureição) 
Tipos de referências
WeakHashMap 
Garante que ao não haver referencias fortes será recolhido da memória. Ex. Metadados
WeakHashMap –javax.cache.Caching (jsr107) 
Evitando o leak de memória
Soft 
Só vão ser recolhidas se for necessário mais memória!!!
Soft 
Utilização da variável local, ótimo exemplo de soft
Phantom
Finzalize -guardian 
Prevenindo que alguma subclasse não chame super.finalize()
FileInputStream –Enceramento explícito/ par nativo
FileInputStream -Rede de segurança 
Caso o método explícito de close() não ser chamado...
Encadeamento de finalizadores
Métodos de fabricação estáticos -Imutáveis –flyweight 
Não crie uma nova instância a cada chamada, reutilize!!
Classes não instanciáveis-Math, Arrays, Collections
Strings imutáveis e canônicas (intern)
Lazy Initialization –atributo de instancia
Lazy Initialization –atributo de classe
Singleton 
Obs: Podemos também centralizar a origem do “criador” das instâncias (Factory Method)
Singleton
Thread local Scope:”request”? –InheritableThreadLocal
-JMX 
-Concurrency 
-Use Buffer para I/0, Log, Hibernate, JSF, JPA e etc 
Benchmark, API, J2EE, frameworks e outros
vamos a prática... 
Prática
Alta Performance com Java

Más contenido relacionado

La actualidad más candente

1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...Zabbix BR
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoelliando dias
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance TuningFernando Ike
 
Deixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDeixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDanilo Pinotti
 
NoSQL: Uma análise crítica
NoSQL: Uma análise críticaNoSQL: Uma análise crítica
NoSQL: Uma análise críticapichiliani
 
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBRAvaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBRJulio Viegas
 
Apresentação VRaptor 3
Apresentação VRaptor 3Apresentação VRaptor 3
Apresentação VRaptor 3Alabê Duarte
 
Introdução Java virtual machine
Introdução Java virtual machineIntrodução Java virtual machine
Introdução Java virtual machineBruno Coan
 
Ruby on Rails: Embarque nesse Framework Web
Ruby on Rails: Embarque nesse Framework WebRuby on Rails: Embarque nesse Framework Web
Ruby on Rails: Embarque nesse Framework Webrafaelgaspar
 
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters) iG - Internet Group do Brasil S/A
 

La actualidad más candente (18)

1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinito
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance Tuning
 
Deixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDeixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidas
 
Introducing Ruby
Introducing RubyIntroducing Ruby
Introducing Ruby
 
NoSQL: Uma análise crítica
NoSQL: Uma análise críticaNoSQL: Uma análise crítica
NoSQL: Uma análise crítica
 
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBRAvaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
 
Apresentação VRaptor 3
Apresentação VRaptor 3Apresentação VRaptor 3
Apresentação VRaptor 3
 
Introdução Java virtual machine
Introdução Java virtual machineIntrodução Java virtual machine
Introdução Java virtual machine
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Ruby on Rails: Embarque nesse Framework Web
Ruby on Rails: Embarque nesse Framework WebRuby on Rails: Embarque nesse Framework Web
Ruby on Rails: Embarque nesse Framework Web
 
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
 
Drupal + Rex
Drupal + RexDrupal + Rex
Drupal + Rex
 
Node JS - Parte 3
Node JS - Parte 3Node JS - Parte 3
Node JS - Parte 3
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
Node JS - Parte 4
Node JS - Parte 4Node JS - Parte 4
Node JS - Parte 4
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
 

Similar a Alta Performance com Java

Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
Armazenamento+de+alta+disponibilidade+com+amazon+ebs
Armazenamento+de+alta+disponibilidade+com+amazon+ebsArmazenamento+de+alta+disponibilidade+com+amazon+ebs
Armazenamento+de+alta+disponibilidade+com+amazon+ebsAmazon Web Services LATAM
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Gerência de Memória em Java - Parte I (2005)
Gerência de Memória em Java - Parte I (2005)Gerência de Memória em Java - Parte I (2005)
Gerência de Memória em Java - Parte I (2005)Helder da Rocha
 
Arquitetura Web no AWS
Arquitetura Web no AWSArquitetura Web no AWS
Arquitetura Web no AWSRafael Nunes
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLJohnes Castro
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancadoAmazon Web Services LATAM
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Análise comparativa de desempenho de FileSystems em ambientes virtualizados
Análise comparativa de desempenho de FileSystems em ambientes virtualizadosAnálise comparativa de desempenho de FileSystems em ambientes virtualizados
Análise comparativa de desempenho de FileSystems em ambientes virtualizadosKleber Silva
 

Similar a Alta Performance com Java (20)

Performance em Java
Performance em JavaPerformance em Java
Performance em Java
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
MySQL - the database
MySQL - the databaseMySQL - the database
MySQL - the database
 
Armazenamento+de+alta+disponibilidade+com+amazon+ebs
Armazenamento+de+alta+disponibilidade+com+amazon+ebsArmazenamento+de+alta+disponibilidade+com+amazon+ebs
Armazenamento+de+alta+disponibilidade+com+amazon+ebs
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Discos & Cia em PostgreSQL
Discos & Cia em PostgreSQLDiscos & Cia em PostgreSQL
Discos & Cia em PostgreSQL
 
Django no AWS
Django no AWSDjango no AWS
Django no AWS
 
Gerência de Memória em Java - Parte I (2005)
Gerência de Memória em Java - Parte I (2005)Gerência de Memória em Java - Parte I (2005)
Gerência de Memória em Java - Parte I (2005)
 
Automação de Data Center
Automação de Data CenterAutomação de Data Center
Automação de Data Center
 
Arquitetura Web no AWS
Arquitetura Web no AWSArquitetura Web no AWS
Arquitetura Web no AWS
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
 
Vamos conversar sobre cache
Vamos conversar sobre cacheVamos conversar sobre cache
Vamos conversar sobre cache
 
Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancado
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Primeiros Passos Com Elasticsearch
Primeiros Passos Com ElasticsearchPrimeiros Passos Com Elasticsearch
Primeiros Passos Com Elasticsearch
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
Análise comparativa de desempenho de FileSystems em ambientes virtualizados
Análise comparativa de desempenho de FileSystems em ambientes virtualizadosAnálise comparativa de desempenho de FileSystems em ambientes virtualizados
Análise comparativa de desempenho de FileSystems em ambientes virtualizados
 

Alta Performance com Java