Windows Phone 内存泄漏 90MB - 只有两个静态页面

2024-02-08

我创建了两个(尽可能基本的).XAML 页面。

静态页面.xaml

  1. 显示内存使用情况
  2. MemoryTest.xaml 的链接

内存测试.xaml

  1. 不执行任何操作,只是显示 10 个左右的文本块,每个文本块带有 Text="This is some text"。

PROBLEM

如果您所做的只是使用超链接在页面之间来回导航,然后使用硬件后退按钮,那么内存使用情况看起来不错。 但如果你一遍又一遍地这样做......当前内存使用量和总内存使用量都会攀升!一路超过了 90MB 的限制。

View my screenshot here:
enter image description here

旁注:

更快或更慢的导航并没有什么区别。 没有资源可以释放,在代码后面没有什么可做的,因为那里什么都没有...... 现在,如果您添加更多控件(就像普通应用程序一样,此过程会增加得更快)。 添加更多静态文本块还可以提高达到 90MB 限制的速度。

这很糟糕,因为我有一个相册页面使用的内存没有被释放,并且在 5 分钟或正常使用后,它超过了 90MB。我需要尝试解决这个问题,这样它就不会在市场测试中失败。

这是每个页面背后的代码

静态页面.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());
    }
}

内存测试.xaml

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

  • 不要费心检查模拟器中的内存消耗,它不精确。使用设备。

  • 不要过早进行优化

  • 当您编写实际的应用程序时,对其进行分析。

  • 调试构建会消耗更多内存,并且当/如果 GC 启动时,导航后内存使用量将会下降。

  • 不要使用GC.Collect()。只是不要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows Phone 内存泄漏 90MB - 只有两个静态页面 的相关文章

随机推荐