私は AppleTV で開発を行っており、ポスターをダウンロードするためのスレッドがあります。
私の最初のバージョンでは、[NSData dataWithContentsOfURL:...] を使用してこれを行い、システム メモリがすぐに使い果たされますが、メモリ リークはありません。
次に、coneybeare がこの投稿で推奨する ASIHTTPRequest に目を向けます。 memory-leak-problem-using-nsdata-in-iphone
状況は良くなりますが、まだメモリ不足です。
奇妙なことに、私のプロセスの常駐メモリは非常に低く安定していますが、システムの使用可能なメモリはどんどん少なくなっていきます。
vm_stat の出力は次のとおりです。
Apple TV:/var/log root# vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free: 1012.
Pages active: 22735.
Pages inactive: 11178.
Pages wired down: 16069.
"Translation faults": 600863.
Pages copy-on-write: 21787.
Pages zero filled: 559108.
Pages reactivated: 2922.
Pageins: 15073.
Pageouts: 11.
Object cache: 4 hits of 7781 lookups (0% hit rate)
Apple TV:/var/log root# vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free: 973.
Pages active: 4568.
Pages inactive: 11067.
Pages wired down: 16076.
"Translation faults": 602533.
Pages copy-on-write: 21881.
Pages zero filled: 559767.
Pages reactivated: 3529.
Pageins: 15087.
Pageouts: 11.
Object cache: 4 hits of 7784 lookups (0% hit rate)
これらの 2 つの出力は、非常に短い期間で取得されます。"Pages active:" に注意してください。約 18k ページがなくなっています。彼らはどこに行ったのですか?
PS。CoreGraphics と VideoToolBox でも同様の問題が見つかりました。つまり、システムが多くのメモリを占有し、それらを解放しないようです。CoreAnimation と VideoToolBox のキャッシュはありますか? はいの場合、これらのキャッシュをクリアするにはどうすればよいですか?
いくつかの更新: 1) BRMarqueeTextControl に関連しているようです。これは、CoreAnimation に基づくテキスト コントロールです。
2) BRMarqueeTextControl を単独で使用してもメモリの問題は発生しません。また、ポスターのダウンロード ジョブを単独で使用してもメモリの問題は発生しません。
3)これら2つが一緒になると、すぐにメモリが使い果たされます。