我正在开发 Windows 8 native 应用程序。在应用程序中来回切换一段时间后,我的应用程序崩溃了。在分析中,使用内存分析器,我发现每次我从一个页面导航到另一个页面时,内存使用量都会增加,尽管我将列表、webclient、字符串等的所有对象设置为空,然后调用 GC.Collect NavigatedFrom 事件。
首先,我认为这可能是图像的原因,因此我从应用程序中删除了图像并进行了测试,但应用程序的内存使用情况仍然没有变化。不知何故,GC.Collect 无法正常工作并释放内存。
我已经尝试了下面提到的事情,但不幸的是我没有释放内存,而是结果保持不变。
在设置新源之前,我已经将图像 urisource 设置为 null,然后调用 gc.Collect 来释放内存使用量,但它似乎并没有释放它
其次,我已将所有对象设置为 null,并调用 GC.Collect(),但它仍然没有从手机应用程序的内存使用中释放空间。
我也尝试使用内存分析器进行分析,但我无法跟踪任何东西。
我也浏览了所有帖子并实现了建议的内容,但 GC.Collect() 似乎没有释放内存。
是否有解决以下问题的方法。如何释放从一页导航到另一页时消耗的内存?
最佳答案
似乎有什么东西阻止了对象在某个循环中被垃圾收集器回收。这可能并且通常是由于某些事件处理程序未被删除,从而使对象保持事件状态。
如果页面或 View 模型中有任何事件,或页面中的任何对象,请在退出页面之前在 onNavigatedFrom 方法中将其删除 (-=) ...免费....
关于c# - Windows Phone 8 上的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18505730/