修正日: 07/10/23
ObjectAlloc
Performance Tools入門 その3
5. Call Stacksタブ
各クラスごとにアウトラインブラウザでコールスタックを表示し、どこでどれだけのオブジェクトが生成されたかを表示します。(図8)【図8】 Call Stacksブラウザ
(1) Call Stacksブラウザ
・Category
クラスの名前です。
・Count
対応する関数内で生成された該当するクラスのオブジェクトの数です。
・Size
対応する関数内で生成された該当するクラスのバイト数です。
上記のスクリーンショットを例にとると、mutableなCFDictionaryはNSApplicationMain以下で880個生成され(43,040バイト)、内訳は[NSApplication run]で15個、[NSBundle loadNibNamed:owner:]で806個・・・ということになります。 loadNibNamed:owner:のさらに細かい内訳はアウトラインタブを開くことで確認できます。
(2) その他の操作
・Current/Total
インスタンスブラウザと同様に、Call Stacksブラウザの上のラジオボタンで表示するオブジェクトの種類を切り替えることができます。
・Descend Unique Path
アウトラインブラウザ内で選択中の関数を、複数の関数に分岐している部分まで一度に開きます。
・Descend Max Path
アウトラインブラウザ内で選択中の関数を、分岐中でオブジェクト数が最大の関数を順に一番下まで開きます。
6. 履歴の参照
調査を一時停止後タブの上のスライダー(図9)を移動することで、それまでのメモリ割当/解放活動の履歴を参照することができます。【図9】 履歴移動用のスライダー
Global Allocations他各ブラウザの表示も履歴の移動とともに変化します。図10は履歴を一番最初に戻したところです。アプリケーション起動後、最初に作成されたのは48バイトのメモリブロックだということが分かります。
ウィンドウ上部左から三番目と四番目のボタンで履歴を一つずつ移動することもできます。
またイベントインスペクタウィンドウを表示する(「File」メニューの「Inspector」)と現在スライダーが選択しているイベントの内容を表示します。
【図10】 スライダーを一番左に移動すると