2011-11-08 5 views
2


こんにちは、コミュニティ 私は私がしなかったことをデバッグしようとしています。このアプリはオンラインで動作し、すべてのパス(多くのパス)をメモリに保存するファイルシステム上のすべてのコンテンツをキャッシュします(間違ったアプローチですが、その上で作業する必要があります)。このアプリは、すべてのコンテンツをダウンロードし、メモリを相対パスで埋めるオプションがあります。
問題は、このオプションをチェックするとアプリがダウンロードとキャッシュを開始しますが、終了する前にクラッシュするということです。シミュレータ上では、すべてうまく動作します。
クラッシュレポートのログでは、jetsamによってメモリ警告とアプリが強制終了されたことが通知されます。 楽器での割り当てによるアプリケーションのトラッキングライブバイトが約7Mbの「ちょうど」であることがわかりました。これは、ダウンロード中に追加されたフラッシングメカニズムを使用することによっても助けられ、ダウンロードの終了後に古いパスを解放します。
目に見える漏れはまったくありません。
私はVMTrackerを使い始めました。居住者と汚れたメモリが61Mbと21Mbのピークでかなり高いことがわかりました。私が得意でないことがあります。
私はそれ
What do "Dirty" and "Resident" mean in relation to Virtual Memory?
How can I get rid of resident dirty memory in Objective-C?
しかし、私は他の汚れメモリがどこから来るの作成パスのほとんどをリリースしていますので、についての質問をたくさん読みましたか?どうすれば清掃できますか?
おかげで、
アンドレアVMトラッカーを使用したiOS分析。汚れたメモリと常駐メモリが原因でメモリの警告が発生する場合、どうすればよいですか?

答えて

6

まあ、私はおそらく接続が何かをキャッシュされたことが分かってきた様々なテストをguess..doing解決策を見つけました。だから私はNSURLCache 0byteを設定しました。私のアプリケーションは、ほとんど半分の汚れたメモリ、ほぼ半分で動作するようです。大きな改善。ここに驚くべき2行のコードがあります。

[[NSURLCache sharedURLCache] setMemoryCapacity:0]; 
[[NSURLCache sharedURLCache] setDiskCapacity:0]; 

私はデータキャッシュを表し、アップルの一部のTECKの話が汚れメモリでも、私はまだURLリクエストでキャッシュポリシーを設定しようとしたしていないことができますが、おそらく効果は同じになります。話として

誰かを助けることを願っています。

関連する問題