1 / 21

Java Performance

Java Performance. Flávia Falcão <fmcf2@cin.ufpe.br>. Roteiro. Performance Performance no desenvolvimento de Software Benchmark Profiling HotSpot Virtual Machine Garbage Collection Referências. Performance. Performance computacional : -Qual o melhor algoritmo? Memória

polly
Download Presentation

Java Performance

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Roteiro • Performance • Performance no desenvolvimento de Software • Benchmark • Profiling • HotSpot Virtual Machine • Garbage Collection • Referências

  3. Performance • 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

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

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

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

  7. Profiling :Exemplo • Desde Java2 SDK 1.2, inclui básico profiling,que permitem verificar onde o programa consome mais tempo : Java –Xrunhprof [opcoes]<MainClassName>

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

  9. HotSpot Virtual Machine • A 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.

  10. HotSpot VM :Arquitetura

  11. Client & Server VM

  12. HotSpot VM :Client x Server • Há 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.

  13. HotSpot VM : Runtime • Interpretador 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ória • Garbage Colletion • Sincronização rápida de threads

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

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

  16. 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 asreferências de objetos.

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

  18. HotSpot VM :Heap Layout

  19. Profiling Garbage Collection Exemplo : 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]

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

  21. Referências • http://java.sun.com/docs/books/performance/ • http://java.sun.com/docs/hotspot/gc1.4.2/ • http://java.sun.com/developer/technicalArticles/Programming/GCPortal/ • http://developers.sun.com/events/techdays/presentations/seattle/CodecampHotSpotVirtualMachineTuning.pdf

More Related