こんにちはコミュニティ、作成していないものをデバッグしようとしています。このアプリはオンラインで動作し、すべてのパス (多くのパス) をメモリに保存するファイル システム上のすべてのコンテンツをキャッシュします (間違ったアプローチが表示されますが、それに取り組む必要があります)。このアプリには、すべてのコンテンツをダウンロードし、メモリを相対パスで埋めるオプションがあります。
問題は、このオプションをオンにすると、アプリがダウンロードとキャッシュを開始しますが、完了する前にクラッシュすることです。もちろん、シミュレーターではすべて正常に動作します。
クラッシュ レポートのログには、jetsam によって強制終了されたメモリの警告とアプリが記載されています。インストゥルメントへの割り当てでアプリを追跡する ライブ バイトは「ちょうど」約 7Mb であることがわかります。これは、ダウンロード中に追加されたフラッシュ メカニズムを使用することによっても助けられ、ダウンロードの終了後に古いパスが解放されます。
目に見える漏れはまったくありません。
VMTracker を使い始めたところ、常駐メモリとダーティ メモリがかなり高く、ピークは 61Mb と 21Mb 前後であることがわかりました。手に入らないものがあります。
私はそれについて多くの質問を読みまし
た 仮想メモリに関連して「ダーティ」と「常駐」は何を意味しますか?
Objective-C の常駐ダーティ メモリを取り除くにはどうすればよいですか?
しかし、他のダーティ メモリの発生元で作成されたほとんどのパスを解放しているのでしょうか。どうすればきれいにできますか?
ありがとう、
アンドレア
4557 次
1 に答える
6
さて、私が推測する解決策を見つけました..さまざまなテストを行ったところ、おそらく接続が何かをキャッシュしていることがわかりました。だから私は NSURLCache 0byte を設定しました。私のアプリケーションは、ほとんど半分のダーティ メモリで実行されるようになりました。大きな改善。これが驚くべき 2 行のコードです。
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
話したように、アップルのいくつかの技術的な話は、ダーティメモリもデータキャッシュを表すことができます.URLリクエストでキャッシュポリシーを設定しようとはしませんでしたが、おそらく効果は同じです.
誰かを助けることを願っています。
于 2011-11-08T16:21:49.710 に答える