我开发了一个 UWP 应用程序。在那里几乎 20个窗口。
每个窗口都包含许多Xaml
个控件。有一段时间它工作正常。
但在使用一段时间之后,应用程序变得非常缓慢。
在做了一些R& D之后我才知道它被称为内存泄漏。
根据我对 .Net垃圾收集器的了解,如果我没有错,就必须处理这个问题。似乎在 UWP 应用程序中它没有发生。所以我认为我应该在GC.Collect()
中使用Page Unload Event
。
这是正确的方法还是我需要做的其他任何事情来释放窗口控件使用的内存?
答案 0 :(得分:2)
性能优化是一个广泛的主题,可能无法回答开放式问题(不了解您的环境和架构等)。
但是,您可以使用Visual Studio分析器来衡量和跟踪性能,并找出需要采取措施的区域,这些可以是;
进一步阅读这些网址也可能对您有帮助。
答案 1 :(得分:1)
GC处理孤立的对象或不再被任何其他类引用的对象。当GC找到这样的对象时,它会将它们从内存中删除。当一个对象被另一个类引用时,甚至在完成它之后,就会发生内存泄漏。这意味着您需要查看代码并找到发生的位置。你需要帮助GC完成工作,确保你不再引用你不需要的物体
我也不建议在页面卸载事件中使用GC.Collect
,因为GC必须冻结线程才能收集。这可能会影响绩效。