Dieses Beispiel veranschaulicht die Verwendung des Datenfeldes staticField und des Sondenfragments StaticInitializer.
In diesem Beispiel verfolgt eine Sonde, wann Instanzen einer Klasse erstellt werden. Liegt zwischen der Erstellung einer Instanz und der Erstellung der vorherigen Instanz dieser Klasse mehr als eine Sekunde, schreibt die Sonde eine Protokollnachricht.
Die Sonde erstellt mit staticField in jeder instrumentierten Klasse ein neues statisches Feld. Im Vergleich dazu führt die Deklaration des Date-Feldes mit fragmentAtClassScope unabhängig von der Anzahl der Klassen, auf die die Sonde angewendet wird, zu nur einer Date-Instanz in der generierten Klasse, die die Sondenfragmente enthält. Diese Methode ist geeignet, wenn die Zeitverzögerung zwischen der Erstellung der Instanzen aller instrumentierten Klassen verfolgt werden soll und nicht die Verzögerung zwischen der Erstellung der Instanzen für jede einzelne instrumentierte Klasse.
Zur Verwendung dieses Beispielcodes müssen Sie package="com.sample*" im Target-Objekt so ändern, dass das Objekt auf den Namen eines tatsächlichen Pakets verweist.
Wenn Sie in XML die Zeichen & und < verwenden möchten, müssen Sie wie im Beispiel die Zeichenentitäten & und < angeben.
<?xml version="1.0" encoding="ASCII"?> <probekit> <probe> <target type="include" package="com.sample*" method="<init>" /> <target type="exclude" package="*" /> <staticField type="java.util.Date"/> <fragment type="entry"> <data name="lastInstanceDate" type="staticField"/> <data name="clname"/> <code> java.util.Date d = new java.util.Date(); long now = d.getTime(); long prev = lastInstanceDate.getTime(); if (prev != 0 && prev + 1000 < now) { System.out.println("[" + clname + " instance after > 1 second]"); } lastInstanceDate.setTime(now); </code> </fragment> <fragment type="staticInitializer"> <data name="lastInstanceDate" type="staticField"/> <data name="clname"/> <code> lastInstanceDate.setTime(0); System.out.println("[" + clname + " class loaded]"); </code> </fragment> </probe> </probekit>
Übergeordnetes Thema: Probekit-Beispiele
Zugehörige Verweise
Sondenobjekt 'StaticField'
Sondenfragment 'staticInitializer'