1

我有一个 Windows Phone 7.5 / Silverlight 应用程序。

每页有 4-5 个图像、4-5 个故事板动画和 2 个文本块。它还具有 2-3 个音效。用户可以从第 1 页导航到第 15 页。一旦我到达第 10 页,内存消耗就会超过 90MB,这是限制。

我读到这个: http: //windowsteamblog.com/windows_phone/b/wpdev/archive/2012/02/01/memory-profiling-for-application-performance.aspx但我无法确定我的问题到底是什么应用程序。

我想尽快将此应用程序作为测试版推送,但是当我运行 Marketplace 测试套件时,它在峰值内存消耗测试中失败。

任何其他指针或资源?谢谢。

添加图像: Grid 有 18 个实例,每页一个。即使我已经离开页面,是否可以在内存中保留一个网格实例? 在此处输入图像描述

在此处输入图像描述

更新- 内存高于 90Mb 时的 Profiler 快照:另外,正如我注意到的,我的每个页面都在内存中,并且不确定 46 个网格实例来自何处。当我转到下一页时,我还添加了 GC.Collect。不确定这是否重要。 在此处输入图像描述

更新了允许转到下一页的控件的代码链接:http: //pastebin.com/ZnBaWfZU

4

1 回答 1

0

我不得不重新设计我的导航,因为每个页面都留在了后台,它占用了内存。

以下是我做的几件事:

1:在 OnNavigateFrom 中,我不得不停止所有动画并将它们设置为 null。所有 SoundEffects 都是一样的。处置了 SoundEffectInstances。

2:在 OnNavigatedTo 中,我手动调用 NavigateService.RemoveBackEntry() 将页面从 backstack 中移除,然后调用 GC.Collect()。

希望这可以帮助。如果使用上述解决方案有任何问题,请随时发表评论。

于 2012-06-04T21:05:21.790 回答