「Leaks」(Object Alloc のセクションがある) を使用して iPhone アプリを実行すると、アプリはメモリ割り当てに問題ないように見えます。ただし、ObjectAlloc ツールだけで実行すると、アプリがメイン タイマーを実行するにつれて、メモリが着実に増加します。(タイマーベースのアプリです)。何を信用したらいいのかわからない。ObjectAlloc ツールに関連する問題があるかどうか疑問に思っていました。多分NSTImerに関連する何か?これをデバイスで実行しています(シミュレーターではありません)。ありがとう。
1 に答える
1
はい -- ツールを信頼してください。最近は本当に正確です。
リークとは、オブジェクトまたは割り当てのアドレスがアプリ内の他の場所に保存されていないオブジェクトまたは割り当てを意味します。メモリにアクセスできなくなりました。
ただし、すべてのリークを排除しても、アプリが無制限に成長できないわけではありません。
無制限の成長は、さまざまな理由で発生する可能性があります。最近使用されていないエントリをプルーニングせずにエントリを追加し続けるキャッシュがある場合があります。または、ファイルシステムに切り捨てられたりフラッシュされたりすることのないトランザクション ログかもしれません。または、古いイメージを破棄せずに、新しいイメージをアプリケーションにロードし続ける場合もあります。
すべてのリークを排除したら、ObjectAlloc の出力を見て、すべてのメモリ割り当てがどこから来ているかを突き止めます。特に、アプリが割り当てをトリガーするために何をしているのかを把握する必要があります。システム フレームワークは、アプリケーションがリソースの消費を直接的または間接的に要求しない限り、誤って継続的な成長を引き起こすことはありません。
于 2010-03-02T05:21:54.440 に答える