Cocoaデスクトップアプリの特定のメモリ動作を追跡しようとしています。私のアプリはNSImageを使用して多くの画像処理を行い、NSURLConnectionを使用してHTTP経由でそれらの画像をWebサイトにアップロードします。
数百枚の画像(非常に大きいものもあります)をアップロードした後、Instrumentを実行してもリークは発生しません。また、MallocDebugを実行しましたが、リークは発生していません。Instrumentを使用してオブジェクトの割り当てを調べると、次のような出力が得られます。
GeneralBlock-9437184, Net Bytes 9437184, # Net 1
GeneralBlock-192512, Net Bytes 2695168, # Net 14
など、小さいサイズの場合。これらを詳しく見ると、「Foundation」が所有しているとマークされ、NSConcreteMutableDatainitWithCapacityを介して作成されています。HTTPアップロード中に、NSMutableDataを使用して投稿本文を作成しているので、これらはNSMutableDataオブジェクトを作成するときにCocoaがキャッシュしているバッファーだと思います。
ココアにこれらを解放させる方法はありますか?私は90%ポジティブで、正しくリリースしています(そして、InstrumentsとMallocDebugはこれを確認しているようです)が、非常に多くのMSMutableDataバッファーを割り当てているため、Cocoaはパフォーマンス上の理由でこれらを維持していると思います。