簡體   English   中英

處理Windows 10中的通用Windows應用程序中的內存

[英]Handling memory in Universal Windows Apps in Windows 10

我正在為Windows 10開發一個UWP應用程序。我的應用程序中存在內存管理問題。 我有一個SplitView其內容中將包含大量圖像。 當用戶單擊圖像時,將在窗格中加載完整大小的圖像。 我正在XAML中直接注冊很多Click and Tapped事件。 當我檢查內存使用情況時,它會不斷增加,在一點之后,應用程序崩潰了。 我的問題是,我是否需要取消注冊我在XAML中注冊的所有事件才能釋放內存? 我嘗試調用GC.Collect()但這並沒有解決問題。 我認為可能存在內存泄漏。 應用程序中有多個頁面,當用戶選擇SplitView外部可用的按鈕時,內容會發生變化,如何在使SplitView內容具有其他頁面之前取消注冊該特定頁面中注冊的事件。

編輯:

整個頁面的XAML超過300行,所以我不能在這里粘貼它。 但事件是這樣注冊的

<Button Name="Sample" Tapped="Sample_Tapped" Content="Sample Button" />

每次都會重新創建頁面。 它沒有緩存。 我在SplitView內容中有一個Frame,每當用戶希望更改顯示的圖像部分時,它就會被更改。

MainFrame.Navigate(typeof(ImagePage),"SampleSection");

當用戶更改部分時,我正在調用垃圾收集器

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
    {
        GC.Collect();

    }

但是沒有釋放內存。

我認為這一行會導致問題:

MainFrame.Navigate(typeof(ImagePage),"SampleSection");

每當用戶選擇圖像時,您將繼續創建新頁面。 它會耗費記憶加班。

解決方案是使用新數據(新DataContext?)刷新頁面,而不是創建新數據。 另一種解決方案是當您需要使用BackStack屬性的新頁面時清除MainFrame的導航堆棧。

將XAML中的NavigationCacheMode設置為“Required”也可以提供幫助,但它不是問題的根源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM