2012-03-20 24 views
4

我創建了兩個(儘可能基本的).XAML頁面。Windows手機內存泄漏90MB - 只有兩個靜態頁面

StaticPage.xaml

  1. 顯示內存使用
  2. 鏈接MemoryTest.xaml

MemoryTest.xaml

  1. 不執行任何操作,但會顯示10個左右文本塊每個瓦特iht Text =「這是一些文字」。

問題

如果你要做的就是來回導航使用超鏈接的頁面之間,然後將硬件後退按鈕,內存使用情況看起來不錯。 但是,如果你一直這樣做...兩者都是當前的內存使用情況,並且總內存使用率攀升!!!!!一路超過90MB的限制。

這裏查看我的截圖:
enter image description here

圖片的標題說明:

導航速度更快或更慢的不有所作爲。 沒有資源可以發佈,沒有任何事情可以在代碼後面進行,因爲沒有任何東西存在...... 現在,如果您添加更多控件(如同普通應用程序一樣,此過程將更快)。 添加更多靜態文本塊也會提高達到90MB限制的速度。

這是不好的,因爲我有一個使用內存的photoalbum頁面沒有得到釋放,5分鐘或體面使用後,它超過90MB ..我需要嘗試解決這個問題,所以它不會通過市場測試。

下面是代碼後面的每一頁

StaticPage.xaml

public partial class staticPage : PhoneApplicationPage 
{ 
    public staticPage() 
    { 
     InitializeComponent(); 
    } 

    private void HyperlinkButton_Click(object sender, RoutedEventArgs e) 
    { 
     NavigationService.Navigate(new Uri("/TestDir/MemTest.xaml", UriKind.Relative)); 
     txtMem.Text = String.Format("{0} MB Peak\n{1} MB Current", (DeviceStatus.ApplicationPeakMemoryUsage/1048576).ToString(), (DeviceStatus.ApplicationCurrentMemoryUsage/1048576).ToString()); 
    } 
} 

MemoryTest.xaml

public partial class MemTest : PhoneApplicationPage 
{ 
    public MemTest() 
    { 
     InitializeComponent(); 
    } 
} 
+0

剛剛被重新標記爲更相關。 – anothershrubery 2012-03-20 15:39:19

+1

'GC.Collect'不能幫你嗎?此外,您可以嘗試使用'Profiler'來查看在使用一段時間後哪些資源仍在內存中。也許這有助於你:http://windowsteamblog.com/windows_phone/b/wpdev/archive/2012/02/01/memory-profiling-for-application-performance.aspx – Ku6opr 2012-03-20 15:57:14

+0

YUP ...顯式調用GC.Collect()在OnNavigatedTo覆蓋工作就像一個魅力。現在我想知道...應該這是更多的汽車? – user1141547 2012-03-20 17:09:23

回答

3
  • 不要檢查內存打擾消費模擬器,它不精確。使用設備。

  • 不要做過早的優化

  • 當你寫一個實際的應用程序,其配置文件。

  • 調試版本消耗更多內存,導航後,如果GC啓動,內存使用量將下降。請使用GC.Collect()。不要。