当我在NetBeans 7.1中使用分析器时,我没有看到我的方法的预期调用编号。
为了测试这一点,我创建了一个简单的程序,它有 3 个方法,每个方法被调用一万次。
public class profilerTest {
static int one;
static int two;
static int three;
public static void main(String args[]) {
for (int i = 0 ;i<= 10000; i++)one();
}
public static void one() {
System.out.println("one:" + one++);
two();
}
public static void two() {
System.out.println("two:" + two++);
three();
}
public static void three() {
System.out.println("three:" + three++);
}
}
我希望在我在分析结束时拍摄的分析器快照中看到每个方法 10000 次调用。但是,我得到的结果显着降低了每种方法的调用次数,并且三种方法中的每一种都不同。
我很好奇导致这种情况的原因,以及是否以及如何获得每种方法的实际调用计数。
这是结果的屏幕截图:
我做了更多的挖掘,发现了这个关于 Java 热点编译器中的内部方法和方法内联的错误报告。建议的修复是对 jdk1.6 使用 -Xint 选项。然而,在 JDK 1.7 上,这不会改变我的结果。