Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software...

Post on 07-Apr-2016

231 views 5 download

Transcript of Java Performance Flávia Falcão. Roteiro Performance Performance no desenvolvimento de Software...

Java Performance

Flávia Falcão<fmcf2@cin.ufpe.br>

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

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

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.

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.

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?

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

Java –Xrunhprof [opcoes]<MainClassName>

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

... ... ...

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.

HotSpot VM :Arquitetura

Client & Server VM

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.

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

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.

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.

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.

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...

HotSpot VM :Heap Layout

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]

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..