8

我正在开发一个 Windows 8 本机应用程序。在应用程序中来回切换一段时间后,我的应用程序崩溃了。在分析中,使用内存分析器我发现每次我从一个页面导航到另一个页面时,内存使用量都会增加,尽管我将列表、webclient、字符串等的所有对象设置为 null 并在之后调用 GC.Collect NavigatedFrom 事件。

首先,我认为这是由于图像造成的,因此我从应用程序中删除了图像并进行了测试,但应用程序的内存使用量仍然没有变化。不知何故 GC.Collect 无法正常工作并释放内存。

我已经尝试了下面提到的事情,但不幸的是我没有释放内存,而是结果保持不变。

  • 在设置新源之前,我已将图像 urisource 设置为 null,然后调用 gc.Collect 以释放内存使用量,但它似乎没有释放它

  • 其次,我已将所有对象设置为 null,并调用 GC.Collect() 但它仍然没有从手机应用程序的内存使用中释放空间。

  • 我还尝试使用内存分析器进行分析,但我无法跟踪任何内容。

我也浏览了所有帖子并实现了建议的内容,但 GC.Collect() 似乎没有释放内存。

以下问题是否有任何解决方法。如何释放从一页导航到另一页时消耗的内存?

4

1 回答 1

3

似乎有些东西阻止了垃圾收集器在某个周期内回收对象。这可能是并且通常是由于某些事件处理程序没有被删除,从而使对象保持活动状态。

如果您在页面或视图模型或页面中的任何对象中有任何事件,请在退出页面之前在 onNavigatedFrom 方法中将其删除(-=)......这可能会解决问题并且您的页面内存是可用的.. ..

于 2013-08-29T08:41:34.013 回答