NetBeans 7.1でプロファイラーを使用すると、メソッドの予期される呼び出し番号が表示されません。
これをテストするために、それぞれ 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 回の呼び出しが見られると予想しています。ただし、得られた結果は、各メソッドの呼び出し数が大幅に少なく、3 つのメソッドごとに異なります。
これを引き起こしている原因と、各メソッドの実際の呼び出し回数を取得できるかどうか、およびその方法に興味があります。
結果のスクリーンショットを次に示します。
私はさらに掘り下げて、Java hotspot コンパイラーの組み込みメソッドとメソッドのインライン化について説明しているこのバグ・レポートを見つけました。推奨される修正は、jdk1.6 に -Xint オプションを使用することです。ただし、JDK 1.7 では、結果は変わりません。