Each extending class must provide advice() method.
Body of this method is copied into instrumented
class.
The exact location, where method body gets copied into,
depends how developer writes the method body.
A call to doHotSpot() in method body, is a tagging method
call indicating that current hotspot should be executed.
For example, of we have a method foo()...
public void foo() {
bar.doSomeThing();
}
...and HotSpotAdvisor.advice():
public void advice() {
long l1 = System.currentTimeMillis();
doHotSpot();
long l2 = System.currentTimeMillis();
System.out.println("It took " + (l2-l1) + " ms");
}
...then it would result in instrumented foo() method like
public void foo() {
long l1 = System.currentTimeMillis();
bar.doSomething();
long l2 = System.currentTimeMillis();
System.out.println("It took " + (l2-l1) + " ms");
}
If a developer does not call doHotSpot() method in
implementation of advice() method, corresponding hotspot
gets replaced from instrumented class.
- Specified by:
advice
in class HotSpotAdvice
- See Also:
HotSpotAdvice.doHotSpot()