すべてのInstruments Trace Templatesのうち、私は以下を使用するのが大好きです。
EXEC_BAD_ACCESS
エラー。UITableView
スクロールのスムーズ化に最適です。私はいつも私のアプリのメモリ使用量とパフォーマンスをプロファイルするようにと言う人々の声を聞きます。
Allocationsを使用しましたが、iPhoneアプリは合計1 MBの割り当てられたメモリで開始し、通常の使用後に5 MBに成長することがわかりました。 iPhoneのメモリ使用量が多すぎますか? iPad?マック?
理由を答えるために、iPhoneとiPadはMacよりもはるかに少ないRAMです。iPhone4は512 MBのRAMを持ちますが、以前のバージョンは256または128でした。 MB。RAM OSが使用し、マルチタスクを実行し、アプリに多くのRAMを浪費する要素がないため、アプリが使用するメモリ。
パフォーマンスのプロファイリングは、アプリの実行が遅いときに通常行うことです。プロファイルを作成してコード内のスロースポットを見つけ、コードをより速く実行できるようにします。アプリが正常に動作する場合、パフォーマンスをプロファイルする必要はほとんどありません。
その方法に答えるには、割り当てツールを使用してメモリ使用量を測定します。 [すべての割り当て]カテゴリの[ライブバイト]列は、アプリが現在使用しているメモリの量を示します。 Allocationsインストゥルメントのヒープショット分析は、アプリのメモリの増加を測定します。ジャンプバーの左側にあるメニューを使用して、ヒープショット分析を行います。
Time Profilerインストゥルメントは、パフォーマンスのためにアプリのプロファイルを作成します。 Time Profiler機器を使用することの難しい部分は、結果を解釈することです。 Time Profilerインストゥルメントは、アプリが関数Xでその時間の75%を費やしていることを通知しません。コード内のスロースポットを見つけるには、データを掘り下げる必要があります。
許容メモリ使用量に関しては、サポートするデバイスとアプリによって異なります。 100 MBのRAMを使用するXcodeのようなアプリは問題ありませんが、1ページのドキュメントに100 MBを使用するTextEditのようなアプリは問題になります。5MBは問題になりませんiOSアプリ。
マークの答えのコメントのいくつかに対処するには:
ライブバイトの割り当てには、CALayer/UIViewsによって使用されるOpenGLテクスチャメモリは含まれません。これは、メモリモニタとの不一致の原因です。
この質問に対する答えはこちらをご覧ください: iPhoneのメモリ消費量を理解する
デバイスの物理メモリに実際にロードされるメモリは、Resident Memory
内のVM Tracker Instrument
です。
Allocation Instrument
は、malloc/[NSObject alloc]
といくつかのフレームワークバッファーによって作成されたメモリのみをマークします。たとえば、解凍された画像ビットマップはAllocation Instrument
に含まれませんが、常にほとんどのメモリを使用します。
Appleから情報を取得するには、WWDC 2012セッション242 iOSアプリのパフォーマンス:メモリをご覧ください。