修正日: 07/10/23
ObjectAlloc
Performance Tools入門 その3
7. その他の機能
(1) Chartウィンドウ
Global Allocationsリストの各行をダブルクリックすることで、Chartウィンドウを表示することができます(図11)。
【図11】 Chartウィンドウ
このウィンドウでは選択した行のクラスのCurrentの値(保持されているオブジェクト数)を折れ線グラフで表示します。Peakがどの辺りになるかなど数の推移を一目で確認することができます。
またChartの中をドラッグして範囲を選択することができます。範囲の始点と終点のイベント番号が左上に表示されます。図11ではオブジェクトの数が一時減って(Event#12909)、その後ピークまで上昇(Event#13647)する範囲を選択しています。 Event#12900から#13700くらいまでの間に大きな変化が起きていることが分かります。スライダーでそのあたりまで履歴を移動しイベントインスペクタを確認することで、どのような処理が行われているのかを確認することができます。
【図11】 Chartウィンドウ
このウィンドウでは選択した行のクラスのCurrentの値(保持されているオブジェクト数)を折れ線グラフで表示します。Peakがどの辺りになるかなど数の推移を一目で確認することができます。
またChartの中をドラッグして範囲を選択することができます。範囲の始点と終点のイベント番号が左上に表示されます。図11ではオブジェクトの数が一時減って(Event#12909)、その後ピークまで上昇(Event#13647)する範囲を選択しています。 Event#12900から#13700くらいまでの間に大きな変化が起きていることが分かります。スライダーでそのあたりまで履歴を移動しイベントインスペクタを確認することで、どのような処理が行われているのかを確認することができます。
(2) Markボタン
ウィンドウ上部一番右の上三角ボタンで現在の状態をMarkできます。「Show since mark」をチェックすることでMarkされた以降のオブジェクトが表示されるようになります。起動プロセスが終了以降、自作のアクションのみなど、特定の処理のみを調べたいときに便利です。
(3) Live update
「Live update」をチェックすることで、各種リストの表示が自動的に更新されます。
8. まとめ
起動してみると棒グラフが伸び縮みが目につくのでそれが主要な機能のように思いがちですが、ちゃんと使ってみるとかなり高機能なアプリケーションであることが分かります。履歴の移動とイベントインスペクタを使えば、かなり細かい部分まで調べることができ便利です(イベントの数が多いので手間はかかりますが)。起動プロセスがどのような手順で行われているのかをステップバイステップで調べていくのも面白いかもしれません。ObjectAllocについてWeb上で調べると、メモリリークを検出に使うという説明もありますが、リークの検出についてはMallocDebugの方が簡単で有効だと思います。リークよりはむしろ、(特に自作の)オブジェクトの生成と解放が有効に行われているのかを確認する用途に向いています。
しかしPerformance Tools全般にいえることですが、クラス名での絞り込み検索がなかったり、イベントインスペクタを開こうとすると対象アプリが落ちることがあったりと、不便なところもありますので、いろいろと試してみて自分なりの使い方を見つけてみてください。
<参考文献>
ObjectAlloc Help (Aboutファイル)
Memory Usage Performance Guidelines