Este exemplo demonstra o uso do item de dados staticField e do fragmento probe StaticInitializer.
Neste exemplo, uma probe acompanha quando as instâncias de uma classe são criadas. Se uma instância for criada mais de um segundo após a instância anterior daquela classe, a probe gravará uma mensagem de log.
Essa probe utiliza staticField para criar um novo campo estático em cada classe sondada. Em comparação, utilizar fragmentAtClassScope para declarar o campo Data resultará em uma única instância de Data aparecendo na classe gerada que contém os fragmentos probe, independente de quantas classes a probe se aplica. Você poderá fazer isso se desejar rastrear o retardo de tempo entre a criação de instâncias de qualquer classe sondada, em vez de rastrear o retardo entre a criação de instâncias de cada classe sondada.
Para utilizar esse código de exemplo, altere package="com.sample*" no objeto de destino para que se refira a um nome de pacote real.
Observe que para utilizar os caracteres & e < em XML, você deve especificar as entidades dos caracteres & e <, conforme mostrado no exemplo.
<?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>
Tópico-pai: Referência do Kit Probe
Referência Relacionada
O Objeto Probe StaticField
Fragmento Probe staticInitializer