java performance flávia falcão. roteiro performance performance no desenvolvimento de software...

21
Java Performance Flávia Falcão <[email protected]>

Upload: marina-mangas

Post on 07-Apr-2016

231 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

Java Performance

Flávia Falcão<[email protected]>

Page 2: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

RoteiroPerformancePerformance no desenvolvimento de SoftwareBenchmark Profiling HotSpot Virtual MachineGarbage CollectionReferências

Page 3: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

PerformancePerformance computacional :

-Qual o melhor algoritmo? Memória

-Quanta memória o software necessita para rodar?Startup TimeEscalabilidade-Um servidor pode funcionar bem com 50 usuários ,mas como ele se comporta com 1000?Performance Percebida

Page 4: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

Performance nas Fases de Desenvolvimento

As fases do tradicional modelo de Desenvolvimento Orientado a Objetos,com uma fase adcional “performace profiling”que determina as caracteristicas de performance do sistema.

Page 5: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

BenchmarkingDevem ser capazes de:

Comparar a performance de soluções alternativas;Retratar a performance de aplicações.Macro benchmark :testam uma grande parte do sistema. Micro benchmark :que testam um especifico aspecto do sistema.

Page 6: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

ProfilingDeterminam que áreas do sistema consomem maior parte dos recursos :

- Que métodos são chamados mais vezes?- Que métodos usam a maior

porcentagem do tempo?- Que métodos estão chamando os

métodos mais usados?- Que método aloca mais memória?

Page 7: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

Profiling :ExemploDesde Java2 SDK 1.2, inclui básico profiling,que permitem verificar onde o programa consome mais tempo :

Java –Xrunhprof [opcoes]<MainClassName>

Page 8: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

Exemplo: Saida do profiling ..... ..... percent live alloc'ed stack class rank self accum bytes objs bytes objs trace name 1 73.33% 73.33% 601448 220 601448 220 1 [I 2 7.38% 80.71% 60536 406 60536 406 1 [C 3 5.49% 86.20% 45000 217 45000 217 1 [B 4 2.09% 88.28% 17120 315 17120 315 1 java.lang.Object 5 1.84% 90.12% 15064 282 15064 282 1 [S 6 1.62% 91.74% 13328 238 13328 238 1 java.lang.Class

... ... ...

Page 9: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

HotSpot Virtual MachineA Tecnologia Java HotSpot foi desenvolvida com o objetivo de maximizar o desempenho de programas executados em máquinas virtuais java .Atualmente a Sun oferece dois produtos baseados nesta tecnologia ,a solução cliente e a solução servidor.Desde a versão 1.3 do J2SE SDK todas as implementações da Sun incluem a versão HotSpot Client VM; a HotSpot Server VM é opcional.

Page 10: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

HotSpot VM :Arquitetura

Page 11: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

Client & Server VM

Page 12: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

HotSpot VM :Client x ServerHá duas partes nos sistemas HotSpot : runtime e compiler.As versões cliente e servidor são diferenciadas pelo seu compilador. A versão cliente é otimizada para que as aplicações tenham uma inicialização rápida e consumam menos memória, enquanto que a versão servidor é otimizada para desempenho.

Page 13: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

HotSpot VM : RuntimeInterpretador de bytecode:

-Um simples compilador JIT compila todos os metodos antes deles serem executados.A HotSpot runtime executa muitos métodos em modo puramente interpretado.Gerenciamento de memóriaGarbage ColletionSincronização rápida de threads

Page 14: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

HotSpot VM :CompilerExecuta o codigo imediatamente usando o interpretador.À medida que a execução prosegue ,analisa o código para detectar os hot spots.Compilação para codigo nativoInlining dos metodos otimizadosOtimizações:eliminação de codigo morto e de subexpressões comuns...Consome menos memóriaMais lento que um compilador JIT ,mas a qualidade das otimizações valem a pena.

Page 15: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

Garbage CollectionA JDK 1.4.1 inclui seis diferentes algoritmos de Garbage Collection; e mais de doze opcões de comandos para configurar o garbage collection.Os beneficios trazidos pelo GC tem um custo que podem causar impacto na performance : pausas.

Page 16: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

Fatores que afetam o GC

Tempo de vida dos objetos: - temporários, intermediários, longos.

Tipo de objetos -Tamanho, complexidade.

Relação entre objetos -Dificuldade de determinar e percorrer

as referências de objetos.

Page 17: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

Generational CollectionDivide a heap em multiplas áreas (gerações)- Objetos gerenciados por idades.- Objetos novos morrem mais cedo : GC mais frequentemente- Gerações mais velhas coletadas com menos frequencia-Diferentes Gerações usam diferentes algoritimos : Copying , Mark-Sweep , Mark-Compact, Incremental, Parallel Copy, Concurrent, Parallel Scavenge...

Page 18: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

HotSpot VM :Heap Layout

Page 19: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

Profiling Garbage CollectionExemplo : java -Xloggc:log.txt –verbose:gc

<mainclass>0.000: [GC 511K->127K(1984K), 0.0090819 secs]0.146: [GC 639K->131K(1984K), 0.0032250 secs]0.230: [GC 642K->137K(1984K), 0.0032993 secs]0.387: [GC 649K->256K(1984K), 0.0066710 secs]19.726: [GC 768K->328K(1984K), 0.0045419 secs]55.513: [GC 840K->380K(1984K), 0.0029828 secs]

Page 20: Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection

GC PortalAs informações output do verbose:gc são pouco amigaveis.O GC Portal provê uma analisa do output do verbose:gc , através de mecanismo como :

- analise e relatórios - gráfico e etc..