17

一種のギャラリーであるアプリケーションを作成しています - さまざまなメディア コンテンツをフルスクリーン ビューアとして表示します。Allocations Instrument は、アプリケーションの使用時に Live Bytes パラメータが 40 Mb を超えないことを示しています。一方、ページを 20 ~ 30 回スライドすると、アプリは 100% 強制終了されます。Dirty Memory パラメータを確認したところ、Live Bytes サイズの 10 倍の大きさであることがわかりました。そして、そのダーティ メモリのほとんどがイメージ IO を消費しました。

スクリーンショット

編集、別のスクリーンショット:

スクリーンショット

上記の割り当てピークは、ビデオ/画像メディア コンテンツの切り替えです。問題は、ダーティ メモリがほぼ直線的に増加することであり、どうにかして解放する必要があります。

次に、アプリケーションの設計についてです。アプリケーション画面には、1 つの横スクロール ビューがあります。スクロール ビューには、複数の画像を含むビデオまたはコラージュ オブジェクトが含まれます。メモリを節約するために、一度に作成されるページは現在のページと左右のページの 3 ページだけです。そのため、スクロール ビューをスライドさせると、ページは常にその場で作成および削除されます。

メソッドを使用してロードしたすべての画像[UIImage imageWithContentOfFile: path]。コラージュ オブジェクトは、imagesArray 内に UIImage インスタンスを格納します。dealloc メソッドで imagesArray 属性がクリアされます。

だから、質問:

  • システムバグの一種か[UIImage imageWithContentOfFile?]
  • Image IO キャッシュですか?
  • クリアできますか?
4

2 に答える 2