Windows phone 7 Windows Phone开发中的内存泄漏问题-Silver Light框架

Windows phone 7 Windows Phone开发中的内存泄漏问题-Silver Light框架,windows-phone-7,Windows Phone 7,我正在使用c#和silver light平台在Windows phone中创建一个游戏。我是这项技术的新手,目前面临内存泄漏问题 根据我所做的研究,我尝试了所有的事情,包括事件、字符串和垃圾收集器的使用 既然垃圾收集器和内存管理现在似乎是个问题,那么有谁能给出一些最佳利用垃圾收集器和内存管理的常用技巧吗。当我的垃圾收集器达到5lac大小时,它停止收集新的东西,应用程序正在崩溃 我还尝试在gc collect中通过参数0清空垃圾收集器,但它正在使应用程序崩溃 您能否就需要注意的基本事项、避免此类问

我正在使用c#和silver light平台在Windows phone中创建一个游戏。我是这项技术的新手,目前面临内存泄漏问题

根据我所做的研究,我尝试了所有的事情,包括事件、字符串和垃圾收集器的使用

既然垃圾收集器和内存管理现在似乎是个问题,那么有谁能给出一些最佳利用垃圾收集器和内存管理的常用技巧吗。当我的垃圾收集器达到5lac大小时,它停止收集新的东西,应用程序正在崩溃

我还尝试在gc collect中通过参数0清空垃圾收集器,但它正在使应用程序崩溃

您能否就需要注意的基本事项、避免此类问题需要遵循的流程以及GC collect的最佳使用提供指导和帮助

提前感谢,,
Jacob

如果没有看到您的任何代码,就很难给出具体的建议

但是,我强烈建议您运行一个内存分析工具,如或。这些工具将向您展示代码的哪些部分从未发布过,并对您进行所需的调整非常有帮助。

一般来说,您不必调用
GC。由于未使用的对象将每隔几秒钟自动收集一次,因此请自行收集

至于什么可以阻止对象被收集,归根结底是它们被“扎根”。根包括:

  • 任何静态引用
  • 运行循环持有的任何引用(您的
    应用程序
    是此处最接近的对象)
  • 当前页面或其后面任何页面上显示的任何内容
  • 上述任何引用的任何内容(包括UI事件),或上述任何内容(等)引用的任何内容
在上面的场景中,这些对象以及它们持有引用的任何对象都不能是GC'd。关于建议:

  • 避免将任何内容定义为
    static
  • 小心
    应用程序持有多少对象
  • 避免使用允许后堆栈增长到ulimited级别的导航模型
  • 可以考虑在页面/视图模型的
    OnNavigatedFrom
    方法中将对大型数据集的引用设置为null,并在
    OnNavigatedTo

我建议使用7.1 SDK附带的。它将告诉您内存中有哪些对象以及原因。

Windows Phone实际上附带了它自己的内存分析器(普通的.NET内存分析器无法使用它)。