【问题标题】:UWP application is getting slow after usage of some time?UWP 应用程序使用一段时间后变慢?
【发布时间】:2017-08-28 10:45:29
【问题描述】:

我开发了一个 UWP 应用程序。其中有将近 20 个窗口

每个窗口都包含很多Xaml 控件。有一段时间它工作正常。

但使用一段时间后应用程序变得非常缓慢。

在做了一些研发之后,我才知道它叫做内存泄漏

根据我在 .Net 垃圾收集器 中的知识,如果我没记错的话,必须处理这个问题。似乎在 UWP 应用程序中它没有发生。所以我想我应该在Page Unload Event 中使用GC.Collect()

这是正确的方法还是我需要做些什么来释放窗口控件使用的内存?

【问题讨论】:

    标签: c# .net memory-leaks uwp


    【解决方案1】:

    GC 负责处理孤立对象或任何其他类不再引用的对象。当 GC 发现这样的对象时,它会将它们从内存中删除。当一个对象被另一个类引用时,即使它已经完成,也会发生内存泄漏。这意味着您需要查看您的代码并找到发生这种情况的位置。您需要确保不再引用不需要的对象,从而帮助 GC 完成其工作。
    我也不建议在页面卸载事件中使用GC.Collect,因为 GC 必须冻结线程才能收集。这可能会影响性能。

    【讨论】:

      【解决方案2】:

      性能优化是一个广泛的主题,可能无法回答开放式问题(不了解您的环境和架构等)。

      但是,您可以使用 Visual Studio 分析器来衡量和跟踪性能并找出需要采取行动的区域,这些都可以;

      • 数据绑定
      • UI 虚拟化
      • 图像渲染
      • 视觉树大小

      进一步阅读这些网址也可能对您有所帮助。

      ms docs 和这个blog

      【讨论】:

      猜你喜欢
      • 2013-07-28
      • 2015-06-27
      • 1970-01-01
      • 2014-10-26
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多