Name

Tools Interface Java Memory Profiler (TIJMP)

Homepage

http://www.khelekore.org/jmp/tijmp/

Lizenz

General Public License (GPL)

Untersuchte Version

Version 0.7

Letzter Untersuchungszeitpunkt

1.12.2010

Kurzbeschreibung

TIJMP

TIJMP ist ein kleines Speicher- und Threadanalysetool, welches die Nachfolge von JMP antritt. JMP war bis zur Java-Version 1.5 lauffähig, wogegen TIJMP speziell für Version 1.6 zu verwenden ist. Es läuft parallel zur Laufzeit des Programmes und schneidet alle Abläufe des Programmes live mit.
Es wird über die Kommandozeile zusammen mit dem Programm gestartet und ermöglicht das Analysieren des Heaps, des Speichers allgemein und der benutzten Threads. Das Tool wurde teils in C und teils in Java geschrieben.

Fazit

TIJMP ist ein kleines aber feines Tool zum Profilen von Javaprogrammen. Die Installation ist etwas umständlich, jedoch lässt sich das Tool auf jedes kompilierte Javaprogramm anwenden. Es ist sehr intuitiv bedienbar, einzig die Analyse der Threads könnte Anfängern schwer fallen, die fehlende Dokumentation macht sich durch diesen Punkt besonders negativ bemerkbar.
Alles in allem ist TIJMP jedoch ein sehr brauchbares Tool zur Speicher- und Threadanalyse.

Einsatzgebiete

TIJMP dient grundsätzlich der Speicheranalyse eines Programmes, um eventuelle Speicherlecks ausfindig zu machen. Außerdem ist es möglich die laufenden Threads zu analysieren um z.B. Locks ausfindig zu machen.

Einsatzumgebungen

TIJMP ist ein externes Java Profiling-Tool, das mit dem Start des zu profilenden Programms ausgeführt wird. Demnach ist es auch möglich, externe, nur in kompilierter Form vorliegende Programme zu analysieren.

Installation

Das Installationspaket für Windows und Linux kann hier heruntergeladen werden.

Installation unter Ubuntu

Eventuell muss noch der JAVA_HOME Pfad durch den Befehl export JAVA_HOME=/usr/lib/jvm/java-6-sun auf der Konsole gesetzt werden. Durch Ausführen von export LD_LIBRARY_PATH=/usr/local/lib/ wird die Bibliothek libtijmp.so für Java nutzbar. Falls Java-Umgebungsvariablen abweichen, ist es nötig diese anzupassen. Durch Ergänzen der beiden Befehle am Ende der Datei .bashrc (im Homeverzeichnis des Benutzerkontos), bleiben die Einstellungen dauerhaft erhalten, ansonsten setzt Ubuntu die Variablen beim nächsten Neustart zurück.

Installation unter Windows

Dokumentation

Außer einer kleinen Installationsanleitung wurde keine weitere Dokumentation gefunden, weder bei dem heruntergeladenen Programm selbst, noch im Internet.
Es existiert lediglich eine Changelog.

Wartung der Projektseite

Die Projektseite scheint seit dem letzten Update auf Version 0.7 nicht sonderlich geändert worden zu sein. Der Internetauftritt ist sehr informationsarm, mehr als ein paar generelle Informationen sind nicht verfügbar.

Nutzergruppen und Support

Es wurden weder Nutzergruppen noch Support gefunden, lediglich eine eMail-Adresse wurde als Kontakt hinterlegt: robo@khelekore.org

Intuitive Nutzbarkeit

Die Intuitive Nutzbarkeit von TIJMP ist gut. Die meisten Aspekte sind selbsterklärend und die ausführbaren Interaktionen verhalten sich erwartungsgemäß.
Durch die nicht vorhandene Dokumentation fehlen jedoch Informationen speziell im Bereich "Thread info". Ohne gute Kenntnisse über dieses Themengebiet ist die Verwendung dieses Teilaspekts schwierig.

Automatisierung

Es wurde keine Möglichkeit gefunden, TIJMP zu automatisieren. Das Profilen geschieht automatisch im Hintergrund, es ist dem User lediglich möglich, bestimmte Aktualisierungszeiträume per Knopfdruck abzukürzen.

Einführendes Beispiel

Läuft ein Programm nach einer bestimmten Zeit langsamer oder hängt bei einer bestimmten Funktionalität, so kann dies ein Hinweis auf ein Speicherleck oder Deadlock sein.
Um ein Problem zu finden, sind Profiling-Tools sehr hilfreich.
TIJMP ist ein Memory Analyzer, mit dessen Hilfe jedoch auch Threads untersucht werden können. Tritt ein solches Problem auf, ist es möglich per "Walk heap" die Anzahl der Objekte seit dem letzten Aufruf zu untersuchen und somit herauszufinden, welche Objekte z.B. viel zu oft existieren.
Per "Memory info" lassen sich schnell viel zu große oder schnell wachsende Objekte auffinden und genau analysieren. Um dies zu vereinfachen, können Filter per Mausklick gesetzt werden.
Zudem lässt sich z.B. der Stack Trace eines Threads unter "Thread info" untersuchen, oder existierende Locks anzeigen.

Detaillierte Beschreibung

Zuerst wird ein bereits kompiliertes Java-Programm benötigt. Dazu wird, in diesem Beipsiel, das bereits fertige Programm PolygonGUI verwendet, dass über eine einfache GUI das Erstellen, Verwalten und Zeichnen von Polygonen ermöglicht.

Das Programm sollte nun zusammen mit TIJMP gestartet worden sein.
FirstCall
Der TIJMP Controller stellt das Programm an sich dar.
Zur Auswahl stehen: Die grafische Darstellung zeigt die Auslastung des Heaps an. Der blaue Bereich zeigt den belegten Speicher, der rote Bereich den insgesamt zur Verfügung stehenden Speicher des Heaps an.
Links unten werden Statusinformationen des Programms angezeigt (siehe Starting up).
In der Konsole werden Informationen über die Ausführungszeit des Garbage Collectors angezeigt.
Wird jetzt der "<<Hardcore-Test>>" durchgeführt erzeugt das Programm tausende Polygone, dementsprechend muss das Programm neuen Speicher für den Heap allokieren, was auch sofort auf dem grafischen Diagramm sichtbar wird.
Für genauere Angaben kann "Memory Info" genutzt werden.
Memory Info

MemInfo
Je mehr Objekte erstellt werden, desto mehr Speicher wird benötigt. D.h., dass mehr Speicher unter "Comitted" allokiert wird und mehr Speicher in "Used" benutzt wird.
Anhand des "<<Hardcore-Tests>>" wird dies sehr gut sichtbar.
Walk heap
Mit Hilfe des "Walk heap" lässt sich feststellen welche Objekte wie oft im Speicher vorhanden sind.
HeapWalk
Die Klasse Pair enthält die Positioninformationen der einzelnen Polygone und wird dadurch sehr oft instanziert. Da seit letztem Schließen des Heap walks erneut ein "<<Hardcore-Test>>" ausgeführt wurde, liegt die "Count diff" und "Size diff" dieser Objekte entsprechend hoch.
Zudem ist es möglich, über Rechtsklick auf einen Eintrag Filter zu setzen oder sich alle Instanzen eines Objekttyps anzeigen zu lassen.
Thread info

Über "Thead info" besteht die Möglichkeit, aktuell laufende Threads zu anaylsieren.
Neben den allgemeinen Informationen wie z.B. der Anzahl der aktiven Threads oben links sind auch genaue Informationen verfügbar.
Thread

Wird ein Thread markiert wird dessen Stack Trace, Monitor und eventuelle Locks mit anderen Threads sichtbar.

Literatur

Keine gefunden.

Zurück zur KombiQu-Werkzeugübersicht
Zurück zur Hauptseite