2012-02-26 13 views
2

楽器をより使いやすくする方法を理解しています。私はちょうどリーク管理の練習を終えました。私は後でそれらを理解するでしょう。その間、私のアプリはクラッシュしていて、メモリ圧に関連しているようです。iOS - アロケーションとメモリモニタ(物理メモリフリー)を使用した楽器の使用と理解

私はこれをInstrumentsで見ました。 AllocationsとMemory Monitorを使用しています。 Allocationsは3〜4 MBのライブバイトをかなり安定して表示していますが、私のアプリを初期化して平衡状態にするだけです。ただし、全体のバイト数は50 MBを超えています。メモリモニタを見るまで、私はこれをあまり考えていませんでした。メモリ使用量が上下してメモリ警告が発生することがわかりました。 (これは割り当てグラフに同時に表示されないことは私には奇妙なようです。)

アプリは平衡点にあるべきですが、明らかにそうではありません。私の質問は、どのように楽器を使用して、なぜメモリの使用が上昇したり下がったりしているのか理解するのを助けることができますか?

+0

アプリがクラッシュしている場合は、リークツールではなくゾンビツールを使用してください。 – CodaFi

答えて

7

デバッグ用ツールとしてのインストゥルメントは、単に優れています。私が理解できることから、あなたは割り当てツールを使用しようとしているので、私はそれを検討します。 Allocationsは、実行中にアプリケーションが割り当てたオブジェクトの数とそのメモリ内の参照、場所、前述のオブジェクトを割り当てる呼び出しコードまでを詳細に示します。計測器がアロケーションツールの実行を開始すると、アプリケーションはすべてのアロケーションを青い点としてレポートし始めます。アプリケーションが実行されるにつれて、より多くのオブジェクトが割り当てられるようになります。 [全体のバイト数]には、アプリが追加したすべてのメモリ割り当て量が表示されます。私はあなたのケースでこれを強調したい:あなたのアプリが現在50メガバイトのメモリを使用しているとは限りません!というのは、あなたのアプリが合計50メガバイトを使用したことを意味します。あなたのアプリは明らかにデバイスのメモリ容量に制限されており、最初の世代を考慮すると3〜4MBはあまり多くありません。 iPhoneには約128MBがありましたが、より複雑なアプリケーションの場合、OSは通常あなたのアプリケーションを殺す前に他のアプリケーションを強制終了します。

連続した折れ線グラフではなく、スパイクを持つ他の割り当てグラフは、その時点で行われている割り当ての数を詳細に示します。通常、スパイクは無視してもかまいませんが、1つの小さな時間に大きなスパイクが多い場合は除きます。

とにかく、特定のメモリ警告の問題に対処するには、受信しているメモリ警告の数と警告のレベルによって正直なところ違いがあります。そしてあなたの漏れについては、私の唯一のアドバイスは次のとおりです。リーク(リークツールの赤いバー)が表示されたら、バーをクリックして、リークされているオブジェクトを見つけます。漏れたオブジェクトを選択し、右側のサイドバーを選択すると、漏れているコードが表示されます。右側のサイドバーの任意の部分をダブルクリックすると、特定の行とクラスのリークが発生します。

+0

ご協力ありがとうございます。割り当てモニターに青い点が表示されません。どのように設定するのですか?私は、充実した曲線しか見ません。 Allocationsの起動設定でEnable NSZombieの検出が見つかりました。私の起動設定は、未記録のDiscard、Style:現在のバイト、type:overlayです。私はこれらの意味がまだわからない。 – Jim

+0

「ドット」(私の謝罪は、私がいつも描いていることですが)は、基本的にはこれらのドットでいっぱいになっていることを意味します(私は唯一の人ならば申し訳ありません。それ)。ゾンビツールを稼働させるために、私はいつもInstrumentsを終了し、ゾンビテンプレート(緑色のゾンビのようなキューブのようなもの)を選択します。 – CodaFi

関連する問題