本示例说明了如何使用 staticField 数据项和 staticInitializer 探针段。
在该示例中,探针保持跟踪类的实例的创建时间。如果在创建该类的前一个实例之后经过一秒以上才创建下一个实例,则探针将写入一条日志消息。
以下是该探针执行的操作:
- 通过使用静态字段定义,探针在每个探测类中创建类型为 Date 的静态字段。将通过调用 new Date(); 来初始化该静态字段。
- 在 staticInitializer 段中,当装入探测类时,该探针将它的 Date 实例设置为“0 时间”(1970 年 1 月)。
- 在 entry 段中,探针会检查何时执行了上一次更新,如果该更新是在一秒钟之前执行的,则将发出报告。(由于目标规则,entry 段仅在构造函数中运行。)
- 最后,探针会将 Date 实例的值更新为“now”。
该探针使用静态字段定义在每个探测类中创建新的静态字段。比较起来,使用类作用域中的段来声明 Date 字段将使 Date 的单个实例出现在保存探针段的生成类中,与将探针应用于多少个类无关。如果您想要跟踪任何探测类实例创建之间的时间延迟,而不是每个探测类实例创建之间的延迟,则可以执行此操作。
此探针在 Probekit 编辑器中是由下列条目定义的:
- 静态字段的标准 Java 类型(右键单击树窗格中的探针,然后单击以输入此值):
java.util.Date
- 目标(要输入下列值,在树窗格中选择目标,然后单击编辑):
- 目标类型:包括
- 包名模式:com.sample*(在此处使用实际的包名。)
- 方法名模式:<init>
- 目标(要输入下列值,在编辑窗格中单击添加,然后单击编辑):
- 段(在树窗格中选择段以输入下列值):