c# - Windows Phone 8 上的内存泄漏

标签 c# memory-leaks windows-phone-8 garbage-collection out-of-memory

我正在开发 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/

相关文章:

java - 升级到 Android 4.2.2 后出现奇怪错误 - Activity 已泄漏 IntentReceiver

ruby ,Mongodb, Anemone : web crawler with possible memory leak?

c# - 将参数从一个 winform 应用程序发送到另一个应用程序并填充文本框

c# - Azure SQL Server Rest API 访问

c++ - QTcpSocket "leaks"内存

c# - Windows Phone 8 MediaStreamSource具有多个音频流

c# - 在 Windows Phone C# 中将 Long 转换为 DateTime

c# - "..."的最佳重载匹配有一些无效参数

c# - 为应用程序提供提升的 UAC

javascript - SignalR错误: Invocation provides 1 argument(s) but target expects 0