1

機器ツールを使用して、アプリケーションのリークを見つけています。アプリケーションでリークを確認しているときに、[割り当て]タブも表示されます。

これまでのところ、楽器ツールでその割り当てタブを使用したことはありません。それが何であるかを確認したところ、#AllAllocations*フィールドが表示されました。これは、アプリケーションによって使用される全体のバイト数を示しています。サイズがどんどん大きくなっているのを見てショックを受けました。

割り当てではなく、メモリリークのみを心配する必要がありますか?そして、#すべての割り当ては、現在のアプリケーションサイズまたは全体的なアプリケーションサイズを対象としていますか?

4

2 に答える 2

2

割り当ては、アプリのメモリフットプリントを表示するのに役立ちます。modalViewControllerを提示し、それを閉じて(そしてそれを繰り返して)、アプリケーションのライブバイトが増え続けることがわかった場合は、何か問題があります。メモリリークは、割り当てられたメモリを確認し、そのメモリへの参照を失った場合に役立ちます。ARCを使用すると役立ちますが、メモリリークが発生する可能性があります(循環参照など)。割り当ては、メモリが割り当てられ、解放されない場所を理解するのにも役立ちます。たとえば、NSArray使用していないオブジェクトでいっぱいですが、それでも生き続けています。あなたの質問のために:

1)両方について心配する必要があります。

2)ライブバイトは、現在のアプリケーションサイズ(仮想メモリ)を示します。全体的なアプリケーションサイズは、まさに「選択した時間範囲での割り当ての総数」です。

これも確認できます。

于 2012-11-15T08:39:14.117 に答える
1

All Allocations行には、Live Bytes列の下にヒープの現在のサイズが表示され、OverallBytes列の下にこれまでに割り当てられたヒープバイトの総数が表示されます。メガバイトを割り当てると、両方の列が1MB増加します。その後、そのメガバイトを解放すると、ライブバイトは1 MB減少しますが、全体のバイトは変更されません。

Live Bytesは、放棄されたメモリまたはリークされたメモリを検出するのに役立ちます。

全体的なバイトは通常あまり役に立ちません。パフォーマンスに問題があり、割り当てのチャーンが多すぎることが原因かどうかを確認したい場合に使用できます。

于 2012-11-15T09:23:26.610 に答える