类作用域中的段探针示例

此示例演示如何在探针中使用类作用域中的段。

在此示例中,探针对与 com.sample* 通配符模式相匹配的包中的所有类创建过的实例数进行计数,并且每创建 100 个实例就报告一次。

类作用域中的段声明一个计数器,该计数器作为 entry 段编译成的类中整型静态字段出现。该段还对 fragment 类声明静态初始化方法来报告已装入探针。注意,类作用域中的段中的项被构建到生成的探针类而不是探针所应用的类中。要将静态字段或静态初始化方法逻辑插入到探针所应用的类中,使用类型为 staticInitializer 的探针段或定义一个静态字段。

在 Probekit 编辑器中将通过以下条目来定义此探针:
  • 类作用域中的段的 Java 代码(在树窗格中选择探针以输入此值):

    static public int entry_counter = 0;
    static int counter = 0;
    static { System.out.println("[fragmentAtClassScope sample probe has loaded.]"); }

  • 目标(要输入这些值,在树窗格中选择目标,然后单击编辑):
    • 目标类型include
    • com.sample*(此处使用实际的包名。)
    • *
    • 方法<init>
    • 特征符*
  • 目标(要输入这些值,在编辑窗格中单击添加,然后单击编辑):
    • 目标类型exclude
    • *
    • *
    • 方法*
    • 特征符*
  • (在树窗格中选择以输入这些值):
    • 段类型entry
    • Java 代码

      ++counter;
      if (counter % 100 == 0)
        System.out.println("[" + counter + " instances of classes in com.sample package so far]");