Мы заметили, что наши приложения UWP имеют утечки памяти.Я исследовал это и обнаружил, что при переходе на новые страницы память увеличивается и, кажется, не сильно уменьшается, даже когда запускается GC.
Я собрал небольшое репро, состоящее из двухстраницы:
- MainPage
<Page>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="70" />
<RowDefinition />
</Grid.RowDefinitions>
<Button x:Name="navigateButton" Content="Navigate" HorizontalAlignment="Center"
Click="NavigateButton_Click" />
<Frame x:Name="mainFrame" IsNavigationStackEnabled="False"
Padding="10" Grid.Row="1" />
</Grid>
</Page>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void NavigateButton_Click(object sender, RoutedEventArgs e)
{
mainFrame.Navigate(typeof(Page1), null, new Windows.UI.Xaml.Media.Animation.DrillInNavigationTransitionInfo());
}
}
Page1:
<Page>
<VariableSizedWrapGrid ItemWidth="100" ItemHeight="60">
<Button Padding="20, 10" Content="Hello!"/>
<Button Padding="20, 10" Content="Hello!"/>
<Button Padding="20, 10" Content="Hello!"/>
<Button Padding="20, 10" Content="Hello!"/>
<Button Padding="20, 10" Content="Hello!"/>
<!-- And 25 more buttons here -->
</VariableSizedWrapGrid>
</Page>
public sealed partial class Page1 : Page
{
public Page1()
{
this.InitializeComponent();
}
~Page1()
{
Debug.WriteLine("Page dead :(");
}
}
Полный исходный код доступен на GitHub .
И вы можете посмотреть видео из репродукции.
Я также попытался установить Frame.IsNavigationStackEnabled в false, это не помогает.
Что я здесь не так делаю?
