Alta Performance com Java
-
Upload
alisson-pedrina -
Category
Engineering
-
view
133 -
download
9
Transcript of Alta Performance com Java
![Page 2: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/2.jpg)
Agradecimentos
![Page 3: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/3.jpg)
1 – Visão Geral sobre Performance
2 – Plataforma Java- compilador
- garbage collector
3 – Boas práticas de Design para uso de Memória
4 - Prática
Conteúdo
![Page 4: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/4.jpg)
Desempenho
Gargalo
Escalabilidade
Performance?
![Page 5: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/5.jpg)
-Online Transaction Process (OLTP)
-Batch
-Latência
-Time-response
-Think time-Throughput (tps - ops)
Vamos observar a performance
![Page 6: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/6.jpg)
Hardware: cpu, memória, storage e network
Configuração de recursosexternos: midleware, bd, load balance, etc
Fatores para performance
![Page 7: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/7.jpg)
- Cópia exata
- Subconjunto com poucos servidores
mas com especificação , hardware
e camadas iguais
O ambiente para os testes
![Page 8: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/8.jpg)
Teoria das filas
Probabilidade
Auxilia
![Page 9: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/9.jpg)
Plataforma:
-compilador (JIT)-garbage collector
“Nada melhora mais a performance do que um código bem escrito !!!”
E agora o Gargalo está no Java?
![Page 10: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/10.jpg)
JVM arquitetura
![Page 11: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/11.jpg)
-Inline
-Scape Analysis(GlobalScape – ArgScape – NoScape)
-Lock elision
(e.g StringBuffer e Vetor)
-Jitwatch
Otimizações
![Page 12: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/12.jpg)
Garbage Collector
![Page 13: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/13.jpg)
●
GC Promoções
![Page 14: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/14.jpg)
-Serial GC (-XX:+UseSerialGC)
-Parallel GC (-XX:+UseParallelGC/ UseParallelOldGC)
-Concurrent Mark & Sweep GC ("CMS") (-XX:+UseConcMarkSweepGC)
-Garbage First (G1) GC (-XX:+UseG1GC)
Garbage Collector
![Page 15: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/15.jpg)
Serial e Paralelo YGC
![Page 16: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/16.jpg)
CMS e Paralelo FGC
![Page 17: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/17.jpg)
●
G1
![Page 18: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/18.jpg)
●
Mapa mental
![Page 19: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/19.jpg)
- jcmd, jmap, jhat e jstat
- jvisualvm
- Memory Analyzer Tools (mat)
- javap
Profile e análise do Heap
![Page 20: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/20.jpg)
JVM memória
![Page 21: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/21.jpg)
Uma referência
![Page 22: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/22.jpg)
Tempo X Espaço
![Page 23: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/23.jpg)
-strong
-weak(metadados, classloader)
-soft(cache)
-phantom(ex. De imagem grande, corrige finalize(), evita ressureição)
Tipos de referências
![Page 24: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/24.jpg)
WeakHashMap
Garante que ao não haver referencias fortes será recolhido da memória. Ex. Metadados
![Page 25: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/25.jpg)
WeakHashMap – javax.cache.Caching (jsr107)
Evitando o leak de memória
![Page 26: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/26.jpg)
Soft
Só vão ser recolhidas se for necessário mais memória!!!
![Page 27: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/27.jpg)
Soft
Utilização da variável local, ótimo exemplo de soft
![Page 28: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/28.jpg)
Phantom
![Page 29: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/29.jpg)
Finzalize - guardian
Prevenindo que alguma subclasse não chame super.finalize()
![Page 30: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/30.jpg)
FileInputStream – Enceramento explícito/ par nativo
![Page 31: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/31.jpg)
FileInputStream - Rede de segurança
Caso o método explícito de close() não ser chamado...
![Page 32: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/32.jpg)
Encadeamento de finalizadores
![Page 33: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/33.jpg)
Métodos de fabricação estáticos - Imutáveis – flyweight
Não crie uma nova instância a cada chamada, reutilize!!
![Page 34: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/34.jpg)
Classes não instanciáveis - Math, Arrays, Collections
![Page 35: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/35.jpg)
Strings imutáveis e canônicas (intern)
![Page 36: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/36.jpg)
Lazy Initialization – atributo de instancia
![Page 37: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/37.jpg)
Lazy Initialization – atributo de classe
![Page 38: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/38.jpg)
Singleton
Obs: Podemos também centralizar a origem do “criador” das instâncias (Factory Method)
![Page 39: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/39.jpg)
Singleton
![Page 40: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/40.jpg)
Thread local Scope:”request”? – InheritableThreadLocal
![Page 41: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/41.jpg)
-JMX
-Concurrency
-Use Buffer para I/0, Log, Hibernate, JSF, JPA e etc
Benchmark, API, J2EE, frameworks e outros
![Page 42: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/42.jpg)
vamos a prática...
Prática
![Page 43: Alta Performance com Java](https://reader036.fdocumentos.com/reader036/viewer/2022062304/55ace02c1a28ab47058b457e/html5/thumbnails/43.jpg)