Ein Leitfaden für Java-Profiler

Ein Leitfaden für Java-Profiler

1. Überblick

Sometimes writing code that just runs is not enough. Möglicherweise möchten wir wissen, was intern vor sich geht, z. B. wie Speicher zugewiesen wird, welche Konsequenzen die Verwendung eines Codierungsansatzes gegenüber einem anderen hat, welche Auswirkungen gleichzeitige Ausführungen haben, Bereiche, in denen die Leistung verbessert werden kann usw. Wir können dafür Profiler verwenden.

Ein Java Profiler ist ein Tool, dasmonitors Java bytecode constructs and operations at the JVM level. Diese Codekonstrukte und Operationen umfassen die Objekterstellung, iterative Ausführungen (einschließlich rekursiver Aufrufe), Methodenausführungen, Threadausführungen und Garbage Collections.

In diesem Artikel werden die wichtigsten Java-Profiler erläutert:JProfiler,YourKit,Java VisualVM undNetbeans Profiler.

2. JProfiler

JProfiler ist für viele Entwickler die erste Wahl. Über eine intuitive Benutzeroberfläche bietet JProfiler Schnittstellen zum Anzeigen der Systemleistung, der Speichernutzung, potenzieller Speicherverluste und der Erstellung von Thread-Profilen.

Mit diesen Informationen können wir leicht erkennen, was wir für die Optimierung, Beseitigung oder Änderung des zugrunde liegenden Systems benötigen.

So sieht die Benutzeroberfläche des JProfilers aus:

Wie die meisten Profiler können wir dieses Tool sowohl für lokale als auch für Remote-Anwendungen verwenden. Dies bedeutet, dassprofile Java applications running on remote machines without having to install anything on them möglich sind.

JProfiler liefert auchadvanced profiling for both SQL and NoSQL databases. Es bietet spezielle Unterstützung für die Erstellung von Profilen für JDBC-, JPA / Hibernate-, MongoDB-, Casandra- und HBase-Datenbanken.

Der folgende Screenshot zeigt die JDBC-Testschnittstelle mit einer Liste der aktuellen Verbindungen:

Wenn wir etwas übercall tree of interactions with our database lernen undconnections that may be leaked sehen möchten, geht JProfiler gut damit um.

Live Memory ist eine Funktion von JProfiler, mit der wirsee current memory usage by our application erreichen können. Wir können die Speichernutzung für Objektdeklarationen und -instanzen oder für den gesamten Aufrufbaum anzeigen.

Im Fall des Zuweisungsaufrufbaums können wir wählen, ob der Aufrufbaum von Live-Objekten, von Objekten mit Speicherbereinigung oder von beidem angezeigt werden soll. Wir können auch entscheiden, ob dieser Zuordnungsbaum für eine bestimmte Klasse oder ein bestimmtes Paket oder für alle Klassen gelten soll.

Der folgende Bildschirm zeigt die Nutzung des Live-Speichers durch alle Objekte mit Instanzenzahlen:

JProfiler unterstütztintegration with popular IDEs wie Eclipse, NetBeans und IntelliJ. Es ist sogar möglich,navigate from snapshot to source code!

3. YourKit

YourKit Java Profiler kann auf vielen verschiedenen Plattformen ausgeführt werden und bietet separate Installationen für jedes unterstützte Betriebssystem (Windows, MacOS, Linux, Solaris, FreeBSD usw.).

Wie JProfiler verfügt YourKit über Kernfunktionen zum Visualisieren von Threads, Speicherbereinigungen, Speichernutzung und Speicherlecks mitsupport for local and remote profiling via ssh tunneling.

Hier ein kurzer Überblick über die Ergebnisse der Speicherprofilerstellung einer Tomcat-Serveranwendung:

YourKit ist auch dann nützlich, wenn wirprofile thrown exceptions möchten. Wir können leicht herausfinden, welche Arten von Ausnahmen ausgelöst wurden und wie oft jede Ausnahme aufgetreten ist.

YourKit hat interessanteCPU profiling feature that allows focused profiling on certain areas of our code wie Methoden oder Teilbäume in Threads. Dies ist sehr leistungsfähig, da es eine bedingte Profilerstellung über die Was-wäre-wenn-Funktion ermöglicht.

Abbildung 5 zeigt ein Beispiel für die Thread-Profiling-Schnittstelle:

Wir können auchprofile SQL, and NoSQL database calls mit YourKit. Es bietet sogar eine Ansicht für tatsächliche Abfragen, die ausgeführt wurden.

Dies ist zwar keine technische Überlegung, aber das zulässige Lizenzmodell von YourKit ist eine gute Wahl für Mehrbenutzer- oder verteilte Teams sowie für Einzellizenzkäufe.

4. Java VisualVM

Java VisualVM ist ein vereinfachtes und dennoch robustes Profiling-Tool für Java-Anwendungen. Standardmäßig ist dieses Toolbundled with the Java Development Kit (JDK). Der Betrieb basiert auf anderen im JDK bereitgestellten eigenständigen Tools wieJConsole,jstat,jstack,jinfo undjmap.

Im Folgenden sehen Sie eine einfache Übersicht über eine laufende Profilerstellungssitzung mit Java VisualVM:

Ein interessanter Vorteil von Java VisualVM ist, dass wirextend it to develop new functionalities as plugins können. Wir können diese Plugins dann zum integrierten Update Center von Java VisualVM hinzufügen.

Java VisualVM unterstütztlocal and remote profiling sowie Speicher- und CPU-Profilerstellung. Connecting to remote applications requires providing credentials (Hostname / IP und Passwort nach Bedarf)but does not provide support for ssh tunneling. Wir können auchreal-time profiling with instant updates aktivieren (normalerweise alle 2 Sekunden).

Im Folgenden sehen Sie den Speicherausblick einer Java-Anwendung, die mit Java VisualVM profiliert wurde:

 

Mit der Snapshot-Funktion von Java VisualVM können wirtake snapshots of profiling sessions for later analysis.

5. NetBeans Profiler

Der NetBeans-Profiler istbundled with Oracle’s open source NetBeans IDE.

Während dieser Profilershares a lot of similarities with Java VisualVM ist, ist es eine gute Wahl, wenn alles in einem Programm (IDE + Profiler) verpackt werden soll.

Alle anderen oben diskutierten Profiler stellen Plugins zur Verfügung, um die Integration von IDEs zu verbessern.

Der folgende Screenshot zeigt ein Beispiel für die NetBeans Profiler-Oberfläche:

Netbeans Profiler ist auch eingood choice for lightweight development and profiling. NetBeans Profiler bietet ein einziges Fenster zum Konfigurieren und Steuern der Profilerstellungssitzung und zum Anzeigen der Ergebnisse. Es gibt eine einzigartige Eigenschaft,how often garbage collection occurs zu kennen.

6. Andere solide Profiler

Einige ehrenwerte Erwähnungen hier sindJava Mission Control,New Relic undPrefix (vonStackify) - diese haben insgesamt weniger Marktanteile, verdienen aber definitiv eine Erwähnung. Das Präfix von Stackify ist beispielsweise ein hervorragendes, leichtes Profiling-Tool, das sich gut zum Profiling nicht nur von Java-Anwendungen, sondern auch von anderen Webanwendungen eignet.

7. Fazit

In diesem Artikel haben wir uns mit Profiling und Java-Profilern befasst. Wir haben uns die Funktionen der einzelnen Profiler angesehen und herausgefunden, welche Informationen die potenzielle Auswahl eines Profilers gegenüber dem anderen betreffen.

Es gibt viele Java-Profiler mit einigen einzigartigen Eigenschaften. Die Auswahl des zu verwendenden Java-Profilers hängt, wie wir in diesem Artikel gesehen haben, hauptsächlich von der Auswahl der Tools eines Entwicklers, der erforderlichen Analyseebene und den Funktionen des Profilers ab.