staticField 및 staticInitializer 프로브 예제

이 예제에서는 staticField 데이터 항목 및 staticInitializer 프로브 단편 사용을 설명합니다.

이 예제에서는 클래스 인스턴스를 작성할 시기를 프로브에서 계속 추적합니다. 해당 클래스의 이전 인스턴스가 작성되고 2초 이상 지난 후 인스턴스가 작성되면 프로브가 로그 메시지를 씁니다.

프로브는 다음을 수행합니다.
  1. 프로브는 static 필드 정의를 사용하여 모든 프로브된 클래스에서 Date 유형의 static 필드를 작성합니다. 이 static 필드는 new Date();를 호출하여 초기화합니다.
  2. staticInitializer 단편에서 프로브는 프로브된 클래스의 Date 인스턴스를 로드할 때 시간을 "0"(1970년 1월)으로 설정합니다.
  3. entry 단편에서 프로브는 이전 갱신 시기를 확인하는지 점검한 후, 2초 전에 갱신을 수행한 경우 보고서를 발행합니다. 대상 규칙 때문에 entry 단편은 생성자에서만 실행됩니다.
  4. 마지막으로 프로브는 Date 인스턴스의 값을 "now"로 갱신합니다.

프로브는 static 필드 정의를 사용하여 모든 프로브된 클래스에서 새 static 필드를 작성합니다. 클래스 범위의 단편을 사용하여 Date 필드를 선언하면 프로브를 적용하는 클래스 수에 상관 없이 프로브 단편을 보유하는 생성된 클래스에 단일 Date 인스턴스가 표시됩니다. 프로브된 각 클래스의 인스턴스 작성 간의 지연을 추적하는 대신, 프로브된 모든 클래스의 인스턴스 작성 간의 시간 지연을 추적하려는 경우 이를 수행할 수 있습니다.

Probekit 편집기에서 이 프로브는 다음 항목으로 정의됩니다.
  • static 필드의 완전한 Java 유형. 트리 분할창에서 프로브를 마우스 오른쪽 단추로 클릭한 후 새로 작성 > static 필드를 클릭하여 이 값을 입력하십시오.

    java.util.Date

  • 대상. 트리 분할창에서 대상을 선택한 후 편집을 클릭하여 이 값을 입력하십시오.
    • 대상 유형: include
    • 패키지: com.sample*(실제 패키지 이름 사용)
    • 클래스: *
    • 메소드: <init>
    • 메소드 서명: *
  • 대상. 편집 분할창에서 추가를 클린한 후 편집을 클릭하여 이 값을 입력하십시오.
    • 대상 유형: exclude
    • 패키지: *
    • 클래스: *
    • 메소드: *
    • 메소드 서명: *
  • 단편. 트리 분할창에서 단편을 선택하여 이 값을 입력하십시오.
    • 단편 유형: entry
    • 데이터 항목:
      • 데이터 유형: staticField, 이름: lastInstanceDate
      • 데이터 유형: className, 이름: clname
    • Java 코드:

      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);

    • 단편. 프로브를 마우스 오른쪽 단추로 클릭한 후 새로 작성 > 단편을 선택하여 이 값을 입력하십시오.
      • 단편 유형: staticInitializer
      • 데이터 항목:
        • 데이터 유형: staticField, 이름: lastInstanceDate
        • 데이터 유형: className, 이름: clname
      • Java 코드:

                 lastInstanceDate.setTime(0);
                 System.out.println("[" + clname + " class loaded]");