Java Performance Flvia Falco fmcf 2cin ufpe br
Java Performance Flávia Falcão <fmcf 2@cin. ufpe. br>
Roteiro Performance no desenvolvimento de Software Benchmark Profiling Hot. Spot Virtual Machine Garbage Collection Referências
Performance computacional : -Qual o melhor algoritmo? Memória -Quanta memória o software necessita para rodar? Startup Time Escalabilidade -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.
Benchmarking Devem 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.
Profiling - Determinam 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 : Exemplo Desde Java 2 SDK 1. 2, inclui básico profiling, que permitem verificar onde o programa consome mais tempo : Java –Xrunhprof [opcoes]<Main. Class. Name>
Exemplo: Saida do profiling. . percent rank self 1 73. 33% 2 7. 38% 3 5. 49% 4 2. 09% 5 1. 84% 6 1. 62%. . live alloc'ed stack class accum bytes objs trace 73. 33% 601448 220 1 80. 71% 60536 406 1 86. 20% 45000 217 1 88. 28% 17120 315 1 90. 12% 15064 282 1 91. 74% 13328 238 1 name [I [C [B java. lang. Object [S java. lang. Class
Hot. Spot Virtual Machine A Tecnologia Java Hot. Spot 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 J 2 SE SDK todas as implementações da Sun incluem a versão Hot. Spot Client VM; a Hot. Spot Server VM é opcional.
Hot. Spot VM : Arquitetura
Client & Server VM
Hot. Spot VM : Client x Server Há duas partes nos sistemas Hot. Spot : 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.
Hot. Spot VM : Runtime Interpretador de bytecode: -Um simples compilador JIT compila todos os metodos antes deles serem executados. A Hot. Spot runtime executa muitos métodos em modo puramente interpretado. Gerenciamento de memória Garbage Colletion Sincronização rápida de threads
Hot. Spot VM : Compiler Executa 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 nativo Inlining dos metodos otimizados Otimizações: eliminação de codigo morto e de subexpressões comuns. . . Consome menos memória Mais lento que um compilador JIT , mas a qualidade das otimizações valem a pena.
Garbage Collection A 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 Collection Divide 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. . .
Hot. Spot VM : Heap Layout
Profiling Garbage Collection Exemplo : java -Xloggc: log. txt –verbose: gc <mainclass> 0. 000: 0. 146: 0. 230: 0. 387: 19. 726: 55. 513: [GC [GC [GC 511 K->127 K(1984 K), 639 K->131 K(1984 K), 642 K->137 K(1984 K), 649 K->256 K(1984 K), 768 K->328 K(1984 K), 840 K->380 K(1984 K), 0. 0090819 0. 0032250 0. 0032993 0. 0066710 0. 0045419 0. 0029828 secs] secs]
GC Portal As 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. .
Referências http: //java. sun. com/docs/books/performance/ http: //java. sun. com/docs/hotspot/gc 1. 4. 2/ http: //java. sun. com/developer/technical. Article s/Programming/GCPortal/ http: //developers. sun. com/events/techdays/pr esentations/seattle/Codecamp. Hot. Spot. Virtual. M achine. Tuning. pdf
- Slides: 21