8

私はWindows 8ネイティブアプリケーションを開発しています。私のアプリはいつかアプリケーションの中を行き来した後にクラッシュしています。解析では、メモリプロファイラを使用して、私は1つのページから別のメモリの使用量を増やすと、null、リスト、Webクライアント、文字列などのすべてのオブジェクトをnullに設定し、その後にnullを設定し、GC.Collect NavigatedFromイベント。Windowsの電話機でメモリリーク8

私はそれが画像に起因すると思ったので、私はアプリから画像を削除してテストしましたが、まだアプリのメモリ使用量に変化はありません。どういうわけかGC.Collectは動作しておらず、メモリを解放しています。

私は以下のことを試しましたが、私の不運はメモリを解放しようとしていません。結果は変わりません。

  • 私は新しいソースを設定する前に、nullに画像urisourceを設定し、メモリ使用量を解放するためにgc.Collectを呼ぶが、

  • 第二に、それを解放していないようですが、私はすべての設定されていますオブジェクトをnullにしてGC.Collect()を呼び出しても、電話アプリのメモリ使用量から空き領域を解放しません。

  • 私もメモリプロファイラを使用して分析しようとしましたが、何も追跡できません。

私もすべての投稿を実行し、提案されたものを実装しましたが、GC.Collect()はメモリを解放しないようです。

次の問題の回避策はありますか。ページ間を移動する際に消費するメモリを解放するにはどうすればよいですか?

+1

これについての回答は得られません。エラーを再現する最小限のプログラムを作成してください。プロファイラを詳しく調べてください。 –

+0

IDisposableオブジェクトに "using"ステートメントを使用していることを確認してください。 – Polyfun

+0

画像を削除した後でもまだ問題が残っているのは変です。通常、Windows Phoneで一番の漏れの原因です。あなたはどのようにページ間を移動していますか?あなたは常に 'NavigationService.Navigate'を使っていますか、' NavigationService.GoBack'を使うことはありますか?ページはバックスタック内にある限り、メモリに保持されます。 –

答えて

3

いくつかのサイクルでガベージコレクタによってオブジェクトがリサイクルされないように思われます。これは、いくつかのイベントハンドラが削除されていないことが原因であり、通常はそのオブジェクトが生きているためです。

ページ内のイベントやビューモデル、またはページ内のオブジェクトがある場合は、ページを終了する前にonNavigatedFromメソッドでそのイベントを削除( - =)してください...これはおそらくトリックとページメモリを行います無料です....

+0

あなたの情報についてJosue Yeray、OnNavigatedFromのイベントハンドラも削除していますが、それでも問題は残ります。メモリの使用量は、あるものを別のものに戻すときに増加し続けます。 – user2728319

+0

すべてのソリューション?私はまだ次の問題に直面しています – user2728319

関連する問題