あなたの質問と同様に私の答えは一般的です。私はあなたが問題が画像にあることを確かに知っていると推測します。 (数百のテキストアイテムを含む単純なListBoxは、多くのMBを要するため、
ウェブを検索すると、this oneなどのリンクが多数見つかります。しかし、一般的な分析は簡単です。
WP7画面サイズ(480x800)の画像を撮影します。 32ビットのビットマップ(これは、WP7が画像を開いたときに使用するものと思われます)は、およそ1.5 MB(単純な乗算)です。
同じjpgファイルは、(高品質の圧縮のために)10倍小さいサイズを持つことができます。
今、あなたは建設
<image source="http://..."/>.
を使用舞台裏で行われているもの(あなたからの任意の情報がない場合には、これは私はあなたが使用したとするものである。)
WP7は、画像をダウンロードし、それをキャッシュに追加します。キャッシュは、画像を指し示すUriの使用を明らかにトレースします。
次に、イメージが開かれます。つまり、ネイティブイメージサイズのビットマップに変換されます。画像がこのプロセスでダウンサンプリングされるのは、maxを超える場合です。 WP7テクスチャサイズ。
hereのようにビットマップサイズをカスタマイズできます。あなたが品質を気にしているなら、2倍、4倍、または8倍の倍率を使うべきです.JPGの場合、これらの要因ははるかに速い選択肢です。 (画像がImageコントロールに読み込まれる前に画像の解像度が分かっているのかどうかはわかりませんが、jpgファイルからこの情報を取得するのは難しくありませんが、今は簡単にどうしたらいいのかわかりません
ビットマップは、コントロールのソースがnullに設定されている場合は(私の推測)、解放されます。 Uriがnullに設定されている場合、ダウンロードされたイメージはキャッシュからパージされます。
この情報をすべて借りれば、イメージキャッシュの使用を(ある種の)制御できるはずです。おおまかにイメージサイズを見積もり、どのイメージがキャッシュに残っているかを判断できます。たぶんUriオブジェクトをあなた自身の構造に格納し、必要に応じてそれらを解放するといったいくつかのトリックが必要になるかもしれません。私はこれが簡単だと言っているわけではありませんが、確かに可能です。
コードを表示してください。 –
これはアプリの中にあります。特に何もありません。誰かが高いメモリ使用量に対処する戦略を持っているなら、私はちょうど興味があった –
完全に任意の問題については?私の解決策は、通常、コード内の血まみれの問題を解決することです。 –