0

放棄されたメモリがリークされたメモリと見なされない理由を教えてください。

メインオブジェクトのdeallocを呼び出した後、オブジェクト参照がそこにあるのはなぜですか。?

楽器によると、

Leaked Memory is : もはや到達できない割り当てられたメモリ。

放棄されたメモリ : 決して使用されない、アクセス可能な割り当てられたメモリ (無駄または忘れられたメモリ)

例 : popOverController が閉じられた後、その viewController 内のすべての変数が解放され、INSTRUMENTS によるとリークはありません。

しかし、Mark Heap を確認すると、一部のメモリが無駄になっていることがわかります。

すべての変数を解放しています。ビューの dealloc が呼び出されると、対応するすべてのオブジェクトが解放されますよね? リリースできない場合は、Leaks に分類されます。

この放棄された記憶をどのようにキャッチするのですか?この背後にある主な原因は何ですか (開発で最も一般的な間違い)?

ありがとう

4

1 に答える 1

1

リークされたメモリは非常に具体的です。これは、コード内で参照されなくなった割り当てられたメモリです。

アプリは、1 バイトもリークすることなく、"多すぎる" メモリを使用できます (たとえば、メモリ警告を受け取り、OS によってシャットダウンされます)。たとえば、UIImage オブジェクトの巨大な配列はメモリを非常に速く占有する可能性がありますが、リークされることはありません。

放棄されたメモリはこのカテゴリに分類されます。オブジェクトでメモリ内のスペースを占有しているが、それらにアクセスしていない場合、これは放棄されたメモリです。Instrument の「決して」の定義は、もちろん、Instrument を実行している間のみです。アプリの機能のすべての領域にアクセスする必要があります。

これで、放棄された/豊富な混乱が解消されました。コメントの記事や、これに関連する、重複していない場合の質問など、他の記事や回答を見つけることができることを願っています

于 2013-08-22T06:18:27.110 に答える