2015-08-13 16 views
6

bellek sızdırıyor basit app oluşturulduEvrensel Uygulama belleği boşaltmaya nasıl zorlanır?

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent();    
    } 

    private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) 
    { 
     this.Frame.Navigate(typeof(MainPage)); 
    } 

arkasında düğmesi tıklandığında her zaman

Görünüm

<Page 
    ... 
    x:Class="App3.MainPage" 
    mc:Ignorable="d"> 
    <StackPanel> 
     <Image Width="300" Height="200" 
      Source="/Assets/BBlHOiv.jpg"></Image> 
     <Button Click="Button_Click">Navigate</Button> 
    </StackPanel> 
</Page> 

Kodu, kod aynı sayfaya gider hangi üzerinde bir görüntü var ~ 400KB. Düğmeye hızlı bir şekilde tıklamaya devam edersem, bellek her bir tıklamayı veya birkaç tıklamayı artırır. Hafıza geri getirilmiyor ya da en azından zamanında değil. Gerçek bir uygulamada, daha karmaşık sayfalar ve daha karmaşık gezinme (dairesel gezinme dahil) ile bu büyük bir sorun olabilir. Soru, uygulamayı hafızayı serbest bırakmak için nasıl zorlamak? İdeal olarak, bir sayfaya artık ihtiyaç duyulmadığında/gösterilmediğinde.

Şanssız bir şekilde şu şeyleri denedim. MVVM kullanırken

# 1 (datacontext XAML belirteç içerisinde ayarlandığında) DataContext

protected override void OnNavigatedFrom(NavigationEventArgs e) 
    { 
     base.OnNavigatedFrom(e); 
     this.DataContext = null; 
     this.Frame.BackStack.Clear(); 
    } 

cevap