8

我正在開發一個Windows 8本地應用程序。在應用程序中來回移動之後,我的應用程序正在崩潰。在分析上,使用內存分析器我發現每次我從一個頁面導航到另一個時,內存使用增加,儘管我設置null列表,webclient,字符串等所有對象爲空,然後調用GC.Collect之後NavigatedFrom事件。windows phone 8上的內存泄露

首先,我認爲這將是由於圖像,因此我從應用程序中刪除了圖像並進行了測試,但仍然沒有改變應用程序的內存使用情況。不知何故,GC.Collect無法正常工作並釋放內存。

我已經嘗試了下面提到的事情,但對我運氣不好的工作釋放內存,而不是結果保持不變。

  • 我已經設置了圖像urisource爲null設置新源之前,然後調用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