修正日: 07/10/23
MallocDebug
Performance Tools入門 その1
6. ゾーンインスペクタ及びメモリインスペクタ
(1)ゾーンインスペクタ
Toolsメニューの「Zone Inspector...」でゾーンインスペクタウィンドウを表示できます(図12)。ゾーンインスペクタでは各ゾーンのメモリ量を一目で把握することが出来ます。
【図12】 ゾーンインスペクタウィンドウ
![](images/malloc/12.png)
大量のメモリを使用するデータオブジェクトを別ゾーンにわけておくと、データの量が一目で分かり便利です。ただし、NSStringなどallocWithZone:/copyWithZone:が効かないクラスも多いので注意しましょう。
サンプル「mLeaker」の「Image Leak (with Zone)」ボタンで「LeakedImageZone」という名前のゾーンにNSImageを生成する例を確認できます。
【図12】 ゾーンインスペクタウィンドウ
![](images/malloc/12.png)
大量のメモリを使用するデータオブジェクトを別ゾーンにわけておくと、データの量が一目で分かり便利です。ただし、NSStringなどallocWithZone:/copyWithZone:が効かないクラスも多いので注意しましょう。
サンプル「mLeaker」の「Image Leak (with Zone)」ボタンで「LeakedImageZone」という名前のゾーンにNSImageを生成する例を確認できます。
(2)メモリインスペクタウィンドウ
メモリブロックテーブル(3項-(6) )の行をダブルクリックすることで、該当するメモリのバイナリデータを表示できます(図13)。下図は4項-(1)のサンプルでNSStringのデータを表示したところです。「This is test string No.73!!」という内容が見て取れます。
なおウィンドウ下部のBackボタンで前のページ、Forwardボタンで次のページ、真ん中の欄にアドレスを指定することでそのアドレスに移動できます。
なおウィンドウ下部のBackボタンで前のページ、Forwardボタンで次のページ、真ん中の欄にアドレスを指定することでそのアドレスに移動できます。
【図13】メモリインスペクタウィンドウ
![](images/malloc/13.png)
(3)MallocAnalysisパネル
メモリインスペクタウィンドウの右下虫眼鏡ボタンでMallocAnalysisパネルを表示できます(図14)。
【図14】 MallocAnalysisパネル
![](images/malloc/14.png)
・Block Info:
メモリのアドレスを入力することで、ブロックの開始位置とサイズを表示します。
・Show in Browser
Block Infoに入力したメモリを割り当てた関数をメインウィンドウのブラウザで表示します。
・Where is this addres seen?
Addressに入力したメモリを参照しているポインタを含むメモリブロックを一覧で表示します。