Ich bin mal gespannt, ob es hier überhaupt etwas gibt, was ich so aufschreiben kann. Vielleicht schreibe ich sowieso schon viel zu viel und niemand liest es (was ich zum Glück nicht weiß).

Immerhin hat es das Thema in den großen Ballsaal geschafft und vielleicht kann Fabian Lange (codecentric) eine spannende Session bieten. Da er direkt nach Angelika Langer kommt, wird das nicht einfach werden...

JVM -> JMX -> GC Log -> Profiler als Übersetzer

  • Instrumentation: Profiler verändert den Code um Informationen einzusammeln (hier kann die Messung das System so beeinflussen -> muss minimiert werden
  • Sampling: betrachtet Threads zu bestimmten Zeitpunkten
  • Wall Clock & CPU Time
  • Self & Cumulative (zu viele Aufrufe)
  • Allocation
  • Live & GCed
  • Hotspot

Link: Evaluating the Accuracy of Java Profilers [pdf]- Interessanter Artikel zu dem Thema.

Live Profiling

 

Praktisches Beispiel bei der Umstellung von DROOLS 5 auf 5.2 (Ausführungszeit ging von 20 Sekunden auf 2 Minuten hoch). Letztendlich wurde, durch den Einsatz von JProfiler festgestellt, dass die Version 5.2 einen Bug hatte, der dann in Version 5.3 behoben wurde.

 

Grundsätzlich sollte man immer mit Sampling starten (entdeckt auch unbekannten Code - im Gegensatz zu Instrumentation. CPU mit Hotspots (Pfeil rechts). Im Speicher Allocation Hotspots suchen (hohe Objektanzahl, Filter nach dem eigenen Package). Threads - Timeline und Dumps nutzen.