1

私は自分の問題を見つける方法を検索します。私の iPad 用アプリケーションでは、データを処理するときにメモリが増加し、そのメモリを決して解放しません。計測器でメモリ リークを試してみましたが、メモリ リークは見つかりませんでした (プロファイルを試して分析します)。

私の質問は、メモリリークやその他の方法を見つけるための他の手段を持っているということですか?

ご検討いただきありがとうございます。

PS:コードの大部分に関係するコードの原因は投稿しませんが、メモリが増加する部分は、FTPからいくつかのzipファイル(Apple DocのSimpleFTPSampleに基づく)をダウンロードする部分です。このファイルを解凍します(フレームワークを使用) minizip) この zip ファイルにはいくつかの画像と XML ファイルが含まれています。この XML ファイルを解析します (約 7200 個の XML ファイルと 35,000 個の画像ファイルが保存されています)。いくつかの情報 (解析の問題) をデータベースに保存しました。私のコードの一部が必要な場合は、私に尋ねてください。

4

2 に答える 2

1

Scheme:Diagnostics でゾンビがオフになっているか確認してください。ゾンビがオンの場合、メモリは削除されません。メモリ リークのテストは、常に Zombies をオフにして行う必要があります。

于 2012-11-30T14:16:08.640 に答える
0

これは通常、オブジェクトが不要になった後でも、データ構造 (NSDictionary、NSArray など) にオブジェクトを保持している場合に発生します。Instruments の Allocations でどのオブジェクトが蓄積されているかを確認し、それらのオブジェクトのインスタンスを保持しているコードをチェックインします。

別の原因として、実行時間の長いスレッドが考えられます。あなたが言及した読み込みと解析が長い時間がかかる単一のスレッドで行われる場合、一時オブジェクトを強制的に定期的にクリーンアップするために、どこかのループで@autoreleasepoolを実行する必要があるかもしれません。

それも全く問題ないかもしれません。あなたはたくさんの画像をロードすると言います。画像はデフォルトで iOS によってキャッシュされ、メモリをクリーンアップするために必要な場合にのみ解放されます。Instruments の [Trace Highlights] に多くのメモリ使用量が表示され、[Allocations] には表示されない場合は、これが原因である可能性があります。

于 2012-11-30T14:24:16.293 に答える