Übung 1.4: Komplexere Sonden erstellen

Bevor Sie mit dieser Übung beginnen, sollten Sie Übung 1.3: Sonde implementieren ausgeführt haben.

Mit dem Probekit können Sie viele reale Probleme beim Debug und bei der Laufzeitanalyse lösen. Sie verfügen jetzt über die Basiskenntnisse für das Schreiben und das Deployment von Sonden. In dieser und der folgenden Lektion werden Sie sich mit Vorschlägen für Sonden beschäftigen, die Sie zur Untersuchung Ihrer eigenen Anwendung schreiben könnten.

Ausnahme untersuchen

Nehmen wir an, eine Methode in einem Servlet löst sporadisch eine Ausnahme aus. Die Protokollnachricht, die daraufhin angezeigt wird, ist nicht sehr hilfreich, da sie das Problem nicht klar bezeichnet. Wenn Sie weitere Informationen benötigen, können Sie eine Sonde schreiben, die immer dann ausgeführt wird, wenn die Methode eine Ausnahme auslöst. Die Ausnahmenachricht und die Argumente für die Methode können vom Java-Code im Sondenfragment protokolliert werden. Auf diese Weise können Sie sehen, warum die Ausnahme ausgelöst wird.

Beachten Sie beim Schreiben und beim Deployment dieser Sonde die folgenden Punkte:

Veränderliches Leistungsverhalten einer Methode untersuchen

Hier folgt ein recht kompliziertes Beispiel für eine Sonde. Nehmen wir an, Ihr Programm enthält eine Methode, die in der Regel schnell ausgeführt wird, gelegentlich jedoch lange Zeit benötigt (z. B. länger als 100 ms).

Sie können eine Sonde schreiben, die die Zeit des Eintritts in die Methode und des Austritts aus der Methode registriert, sobald die Methode ausgeführt wird. Wenn die Ausführungszeit kurz ist, unternimmt die Sonde nichts. Bei langer Ausführungszeit meldet die Sonde die Argumente für die Methode sowie andere wichtige Informationen zum Programmstatus und zur Zeit. Auf diese Weise können Sie bestimmen, unter welchen Umständen es zu längeren Ausführungszeiten kommt.

Beachten Sie beim Schreiben der Sonde die folgenden Punkte:

Beim Eintritt in die Methode erfasst diese Sonde die aktuelle Zeit. Beim Austritt aus der Methode vergleicht die Sonde die aktuelle Uhrzeit mit der erfassten Eintrittszeit. Ist mehr als eine bestimmte Zeit verstrichen (die in "thresholdDuration" angegeben wurde), gibt die Sonde in System.out einen Bericht aus.

Veränderliches Leistungsverhalten in einer rekursiven Methode mit mehreren Threads untersuchen

Die gerade beschriebene Sonde kann nicht für (direkt oder indirekt) rekursive Methoden verwendet werden. Sie ist auch nicht für Methoden geeignet, die in mehreren Threads gleichzeitig ausgeführt werden können. Das Rekursionsproblem könnten Sie lösen, indem Sie die Eintrittszeiten in einem Stack erfassen. Zur Lösung des Problems mehrerer Threads könnten Sie den Stack in einer Variablen ThreadLocal speichern.

Erforderliche Schritte für das Erstellen einer Sondenversion, die auch für rekursive Methoden mit mehreren Threads geeignet ist:

Setzen Sie das Lernprogramm mit Übung 1.5: Laufzeitbibliothek für komplexere Sondenlogik verwenden fort.

Nutzungsbedingungen | Feedback
(C) Copyright IBM Corporation 2000, 2005. Alle Rechte vorbehalten.