呼び出し元/呼び出し先ビュー
概要ビューや関数ビューで右クリックして表示されるメニューなどから、このビューを表示することができます。呼び出し元/呼び出し先ビューでは、中央に現在対象としている関数が表示され、その上部には対象関数を呼び出した関数、下部には対象関数から呼び出された関数が表示されます。このビューで関数の前後関係を確認しながら、実行時間の長い関数やそれに関連する関数を簡単に確認することができます。
また、ビュー内の適当な場所で右クリックして、[列の追加と削除]を選択することで関数ビューと同じように列を自由にカスタマイズすることができます。
呼び出し元/呼び出し先ビューを利用したメイン操作は、関数のダブルクリックです。関数をダブルクリックすることでその関数を中心とした前後関係の確認を行う表示内容に簡単に切り替わります。関数をダブルクリックしながら呼び出し先の関数を表示していくことで、最終的にボトルネックとなっているポイントに到達することができます。
呼び出しツリービュー
呼び出しツリービューは、レポート分析内容を表示している画面の下部にある[コールツリー]を選択することで表示できます。VS上では「コールツリー」、MSDNライブラリ上では[呼び出しツリー]となっているので注意してください。このビューでは、特定の呼び出し部分を掘り下げてパフォーマンスの影響が大きい部分に到達することができます。また、ビュー内の適当な場所で右クリックして、[列の追加と削除]を選択することで、関数ビューと同じように列を自由にカスタマイズすることができます。
呼び出しツリービューで呼び出しを掘り下げていると、かなり深くまで展開しなければいけないことが多くあります。そこである地点を先頭に設定することができるようになっています。これには先頭に設定したい地点で右クリックして、表示されたメニューから[ルートの設定]を選択します。
呼び出し元/呼び出し先ビューは、ある特定の関数に注目してその前後関係からボトルネック箇所にたどりつくアプローチでしたが、呼び出しツリービューではある程度全体を把握しながら、トップダウンでボトルネック箇所にたどりつくアプローチになります。どちらも最終的な目的は同じなので、その時々で利用しやすいほうを利用してください。
割り当てビュー
割り当てビューは、呼び出しツリービューと同様にレポート分析内容を表示している画面の下部にある[割り当て]を選択することで表示できます。または後述のオブジェクトの有効期間ビューから表示させることもできます。このビューには、後述する.NETメモリプロファイリングの割り当てが有効な場合にのみデータが表示されます。割り当てビューは初期状態で、型(クラス)ごとにグループ化された状態で、インスタンス数や割り当てられたバイト数、全体との割合などが表示されています。型を展開すると、関数ごとの詳細を見ることもできます。
この割り当てビューを利用して、インスタンス数や割り当てられたバイト数でソートを行えば、問題となっている関数やその型がなんなのかを容易に知ることができます。呼び出し元/呼び出し先ビューやコールツリーでは関数の単位でどこに問題があるのかを把握し、割り当てビューではそれがどの程度問題となっているのかを把握することができます。また、割り当てビューでも関数ビューなどと同様に、ビュー内の適当な場所で右クリックして表示されるメニューから[列の追加と削除]を選択することで列を自由にカスタマイズすることができます。
オブジェクトの有効期間ビュー
オブジェクトの有効期間ビューも、呼び出しツリービューなどと同様にレポート分析内容を表示している画面の下部にある[オブジェクトの有効期間]を選択することで表示できます。または割り当てビュー内の適当な場所で右クリックして表示されるメニューから[オブジェクトの有効期間ビューで表示]を選択しても表示できます(図17)。このビューも割り当てビュー同様に、後述する.NETメモリプロファイリングの割り当てが有効な場合にのみデータが表示されます。
オブジェクトの有効期間ビューでは型(クラス)ごとに世代0~2のインスタンス数など、割り当てビューより詳細なデータを確認することができます。
オブジェクトの有効期間ビューで型ごとのインスタンスの存続期間を確認することで、存在時間が長いものが多い(世代2が多い)ことが問題なのか世代は短いがメモリ量が多すぎて問題なのかなどの情報を確認して対処方法の検討を行うことができます。ただし、このビューでは型の中で実際に利用された関数の情報は確認できないため、割り当てビューと相互に補完しあう形で参照することになります。このためオブジェクトの有効期間ビューの適当な場所で右クリックして表示されるメニューには[割り当てビューで表示]という項目が存在しています。