Save 37% off PRO during our Black Friday Sale! »

Java Performance Analyse mit YourKit (JavaLand 2018)

Java Performance Analyse mit YourKit (JavaLand 2018)

(Mostly German)
To analyse Java performance bottlenecks the tool YourKit Java Profiler is an excellent though commercial tool. In this talk I showed when to tweak performance and how to use the tool. Most of the presentation was an interactive demo of the tool, but the slides also cover some screenshots of findings. As a showcase I profiled the Eclipse Java IDE and looked at some expensive use cases like project build or software update.

E76754f592fecf0116c53b2bc39ff135?s=128

Karsten Thoms

March 15, 2018
Tweet

Transcript

  1. @kthoms @ @kthoms @ #javaland #performance #yourkit Java Performance Analyse

    Karsten Thoms - itemis AG mit
  2. @kthoms @ #javaland #performance #yourkit Safe Harbor Statement Das vorgestellte

    Tool YourKit ist kommerziell Diese Präsentation erfolgt nicht im Auftrag von YourKit Ich beziehe keine Benefits von YourKit Die vorgestellten Use Cases sind nicht allgemein gültig Closed Source Use Cases kann ich leider nicht zeigen Es geht weder um Application Performance Monitoring, noch um Micro Benchmarking https://pixabay.com/de/schatzkiste-kette-schlo%C3%9F-3005312/
  3. @kthoms @ #javaland #performance #yourkit

  4. MAKE BIG THINGS
 RUN AGAIN!

  5. @kthoms @ #javaland #performance #yourkit https://pixabay.com/de/nadel-im-heuhaufen-nadel-heuhaufen-1752846/

  6. @kthoms @ #javaland #performance #yourkit WIR HABEN EIN PERFORMANCE PROBLEM

    IDENTIFIZIERT !
  7. @kthoms @ #javaland #performance #yourkit Woran liegt es?

  8. @kthoms @ #javaland #performance #yourkit

  9. @kthoms @ #javaland #performance #yourkit

  10. @kthoms @ #javaland #performance #yourkit • Kommerzielles Profiling Tool für

    Java and .NET • Integration mit gängigen IDEs • CPU & Memory Profiling • Local & Remote Profiling • Schnell & Leichtgewichtig Promo Code „javaland“ 10% off all licenses
  11. @kthoms @ #javaland #performance #yourkit M A I N S

    C R E E N
  12. @kthoms @ #javaland #performance #yourkit I N T E G

    R A T I O N
  13. @kthoms @ #javaland #performance #yourkit -agentpath:/<YK_PATH>/Contents/Resources/bin/mac/libyjpagent.jnilib I N T E

    G R A T I O N
  14. @kthoms @ #javaland #performance #yourkit Agent Integration verringert Zeit zur

    Instrumentierung
  15. @kthoms @ #javaland #performance #yourkit C P U P R

    O F I L I N G
  16. @kthoms @ #javaland #performance #yourkit M E M O R

    Y S N A P S H O T
  17. @kthoms @ #javaland #performance #yourkit H O T S P

    O T S
  18. @kthoms @ #javaland #performance #yourkit W H A T -

    I F …
  19. @kthoms @ #javaland #performance #yourkit W H A T -

    I F …
  20. @kthoms @ #javaland #performance #yourkit T H R E A

    D S
  21. @kthoms @ #javaland #performance #yourkit F I L T E

    R B Y M E T H O D
  22. @kthoms @ #javaland #performance #yourkit E X C E P

    T I O N S
  23. @kthoms @ #javaland #performance #yourkit P E R F O

    R M A N C E C H A R T S
  24. @kthoms @ #javaland #performance #yourkit E V E N T

    S
  25. @kthoms @ #javaland #performance #yourkit I N S P E

    C T I O N S
  26. @kthoms @ #javaland #performance #yourkit I N S P E

    C T I O N S
  27. @kthoms @ #javaland #performance #yourkit Use Case: Banking Application

  28. @kthoms @ #javaland #performance #yourkit @kthoms G C S T

    O P - T H E - W O R L D
  29. @kthoms @ #javaland #performance #yourkit B L O C K

    I N G C L A S S L O A D E R
  30. @kthoms @ #javaland #performance #yourkit Use Case: hashCode

  31. @kthoms @ #javaland #performance #yourkit Auch hashCode kann teuer sein

    Muss nur häufig genug aufgerufen werden
  32. @kthoms @ #javaland #performance #yourkit

  33. @kthoms @ #javaland #performance #yourkit

  34. @kthoms @ #javaland #performance #yourkit Use Case: Eclipse File Search

  35. @kthoms @ #javaland #performance #yourkit

  36. @kthoms @ #javaland #performance #yourkit

  37. @kthoms @ #javaland #performance #yourkit

  38. @kthoms @ #javaland #performance #yourkit Use Case: Eclipse PDE

  39. @kthoms @ #javaland #performance #yourkit https://bugs.eclipse.org/bugs/show_bug.cgi?id=532072

  40. @kthoms @ #javaland #performance #yourkit

  41. @kthoms @ #javaland #performance #yourkit

  42. @kthoms @ #javaland #performance #yourkit Use Case: Eclipse Update

  43. @kthoms @ #javaland #performance #yourkit https://bugs.eclipse.org/bugs/show_bug.cgi?id=532190 U N B U

    F F E R E D W R I T E
  44. @kthoms @ #javaland #performance #yourkit U N C L O

    S E D F I L E S
  45. @kthoms @ @kthoms @ #javaland #performance #yourkit Memory Profiling

  46. @kthoms @ #javaland #performance #yourkit GC Root, Shallow & Retained

    Size GC Roots obj1 obj2 obj3 obj4 obj5
  47. @kthoms @ #javaland #performance #yourkit GC Root, Shallow & Retained

    Size GC Roots obj1 obj2 obj3 obj4 obj5 GC Roots obj1 obj2 obj3 obj4 obj5
  48. @kthoms @ #javaland #performance #yourkit O B J E C

    T S B Y C L A S S
  49. @kthoms @ #javaland #performance #yourkit B I G G E

    S T O B J E C T S
  50. @kthoms @ #javaland #performance #yourkit Use Case: Banking Application

  51. @kthoms @ #javaland #performance #yourkit Optimierung Instanzgrößen • Example: Simple

    optimization of data classes reduced heap by 1/3 • => Lazy initialization of collections • => Using wrappers instead of primitives for sparsely populated fields • => Used literals for frequent values (i.e. BigInteger.ZERO/ONE …)
  52. @kthoms @ #javaland #performance #yourkit 120 MB Heap

  53. @kthoms @ #javaland #performance #yourkit 80 MB Heap

  54. @kthoms @ #javaland #performance #yourkit Lessons Learned Performance vs. Memory

    Consumption Nicht raten - messen ! Nicht auf Verdacht optimieren Sampling meist ausreichend A fool with a tool is still a fool Snapshot Verwaltung umständlich
  55. @kthoms @ #javaland #performance #yourkit Fazit Bottlenecks zeigen sich oft

    nur bei großen Datenmengen Performance Probleme bei „schnellen“ Methoden oft ein Indiz für algorithmisches Problem oder fehlendes Caching Nicht von vornherein optimieren YourKit ist ein sehr nützliches Werkzeug … aber es kann die Daten nicht für dich interpretieren ! Kostet Geld, spart Geld!
  56. @kthoms @ #javaland #performance #yourkit https://pixabay.com/de/fragen-wer-was-wie-warum-wo-wand-2110967/

  57. @kthoms @ #javaland #performance #yourkit