이 예는 staticField 데이터 항목 및 StaticInitializer 프로브 단편의 사용에 대해 설명합니다.
이 예에서 프로브는 클래스 인스턴스 작성 시의 트랙을 유지합니다. 해당 클래스의 이전 인스턴스 이후 1초가 초과한 후에 인스턴스가 작성되면 프로브는 로그 메시지를 작성합니다.
이 프로브에서는 staticField를 사용하여 새 정적 필드를 모든 프로브된 클래스에 작성합니다. 비교해 보면, fragmentAtClassScope를 사용하여 날짜 필드를 선언하면 프로브를 적용하는 클래스 수와 관계 없이 프로브 단편을 보유하는 생성된 클래스에 하나의 날짜 인스턴스가 나타나게 됩니다. 프로브된 각 클래스의 인스턴스 작성 간의 지연을 추적하는 대신 프로브된 클래스의 인스턴스 작성 간의 시간 지연을 추적하려는 경우 이를 수행할 수 있습니다.
이 예 코드를 사용하려면 대상 객체에서 package="com.sample*"가 실제 패키지 이름을 참조하도록 변경하십시오.
XML에서 & 및 < 문자를 사용하려면 & 및 < 문자 엔티티를 예에 표시된 대로 지정해야 합니다.
<?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>
상위 주제: Probekit 예