Oracle® Solaris Studio 12.4: パフォーマンスアナライザチュートリアル

印刷ビューの終了

更新: 2014 年 12 月
 
 

Java および C++ 混合コードの検査

このセクションでは、「呼び出しツリー」ビューと「ソース」ビューについて説明し、Java から C++ への呼び出しと C++ から Java への呼び出しの間の関係を確認する方法を示します。また、ナビゲーションパネルに「逆アセンブリ」ビューを追加する方法を示します。

  1. 「関数」ビューのリストの上部にある各関数を順に選択して、「選択の詳細」ウィンドウで詳細情報を調べます。

    関数によっては、ソースファイルが jsynprog.java と報告されるものと、cloop.cc と報告されるものがあります。これは、jsynprog プログラムによって、cloop.cc C++ ソースファイルから構築された libcloop.so という名前の C++ 共有オブジェクトがロードされたためです。パフォーマンスアナライザでは、Java から C++ への呼び出しと C++ から Java への呼び出しがシームレスに報告されます。

  2. ナビゲーションツリーで「呼び出しツリー」を選択します。

    「呼び出しツリー」ビューには、Java と C++ の間のこれらの呼び出しが行われる方法がグラフィカルに示されます。

    image:jsynprog サンプルコードの「呼び出しツリー」ビュー
  3. 「呼び出しツリー」ビューで次を行なって、Java から C++ への呼び出しと C++ から Java への呼び出しを確認します。

    • 名前に「C」が含まれるさまざまな関数を指す行を展開します。

    • jsynprog.JavaCC() の行を選択します。この関数は Java コードから生成されますが、C++ コードから生成された Java_jsynprog_JavaCC() への呼び出しを行います。

    • jsynprog.JavaCJava() の行を選択します。この関数も Java コードから生成されますが、C++ コードである Java_jsynprog_JavaCJava() を呼び出します。その関数は、Java からメソッド jsynprog.javafunc() への呼び出しを行う JNIEnv_::CallStaticIntMethod() の C++ メソッドへの呼び出しを行います。

  4. Java または C++ のいずれかからメソッドを選択して、「ソース」ビューに切り替えて適切な言語で示されたソースをパフォーマンスメトリックとともに表示します。

    Java メソッドを選択したあとの「ソース」ビューの例を次に示します。

    image:Routine.java のソースコードを示す「ソース」ビュー

    C++ メソッドを選択したあとの「ソース」ビューの例を次に示します。

    image:cloop.cc の C++ ソースコードを示す「ソース」ビュー
  5. ナビゲーションパネルの上部で、「ビュー」ラベルの横にある「+」ボタンをクリックして、「逆アセンブリ」のチェックボックスにチェックマークを付けます。

    最後に選択した関数の「逆アセンブリ」ビューが表示されます。Java 関数の場合、次のスクリーンショットに示すように、「逆アセンブリ」ビューには Java バイトコードが示されます。

    image:Java 関数の「逆アセンブリ」ビュー

    C++ 関数の場合、次のスクリーンショットに示すように、「逆アセンブリ」ビューにはネイティブマシンコードが示されます。

    image:C++ 関数の「逆アセンブリ」ビュー

    次のセクションでは、「逆アセンブリ」ビューをさらに使用します。