【问题标题】:WP8 LongListSelector memory leak with TextBlockWP8 LongListSelector 内存泄漏与 TextBlock
【发布时间】:2023-03-16 17:00:02
【问题描述】:

我有测试应用:

http://www.mediafire.com/download/y5nxo6esifys4h0/LeakMemLLS.rar

它由两页组成:

  1. 主页。

  2. ListItems 页面(使用 LongListSelector)。

当我多次转到 ListItems 页面并返回主页时。内存增加了。

有人知道是什么问题吗?

谢谢。

【问题讨论】:

    标签: memory-leaks windows-phone-8 textblock longlistselector


    【解决方案1】:

    当您从PhoneApplicationPage 导航回来,然后再次导航到它时,运行时会创建它的一个新实例。因此,您会看到这种内存增加。通常没关系,因为垃圾收集器会在必要时回收未使用的实例。

    【讨论】:

    • 我使用了GC.Colect(),但内存仍然增加。当我回到 MainPage 并多次转到 ListItems 页面时。内存会增加,直到应用程序崩溃(内存不足)。
    【解决方案2】:

    每次到达任何页面的onNavigateTo()时都必须清除堆栈,所有页面都保留在堆栈中,GC.Colect()无法删除您的堆栈。

    int a = NavigationService.BackStack.Count();
            while (a > standerdCount)
            {
                this.NavigationService.RemoveBackEntry();
                a = NavigationService.BackStack.Count();
            }
    

    standerdCount 是应用第一次到达页面时的堆栈计数。

    从 ListItem 页面导航到 MainPage 时,您也可以使用 NavigationService.GoBack()

    【讨论】:

    • 通过清除列表内存解决了你的问题,虽然你也可以使用 list.clearAll()。
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 2014-07-01
    • 1970-01-01
    • 2015-10-05
    • 2011-10-16
    • 2019-08-08
    • 2012-08-21
    • 2016-01-25
    相关资源
    最近更新 更多