Windows phone 7 Windows Phone开发中的内存泄漏问题-Silver Light框架
我正在使用c#和silver light平台在Windows phone中创建一个游戏。我是这项技术的新手,目前面临内存泄漏问题 根据我所做的研究,我尝试了所有的事情,包括事件、字符串和垃圾收集器的使用 既然垃圾收集器和内存管理现在似乎是个问题,那么有谁能给出一些最佳利用垃圾收集器和内存管理的常用技巧吗。当我的垃圾收集器达到5lac大小时,它停止收集新的东西,应用程序正在崩溃 我还尝试在gc collect中通过参数0清空垃圾收集器,但它正在使应用程序崩溃 您能否就需要注意的基本事项、避免此类问题需要遵循的流程以及GC collect的最佳使用提供指导和帮助 提前感谢,,Windows phone 7 Windows Phone开发中的内存泄漏问题-Silver Light框架,windows-phone-7,Windows Phone 7,我正在使用c#和silver light平台在Windows phone中创建一个游戏。我是这项技术的新手,目前面临内存泄漏问题 根据我所做的研究,我尝试了所有的事情,包括事件、字符串和垃圾收集器的使用 既然垃圾收集器和内存管理现在似乎是个问题,那么有谁能给出一些最佳利用垃圾收集器和内存管理的常用技巧吗。当我的垃圾收集器达到5lac大小时,它停止收集新的东西,应用程序正在崩溃 我还尝试在gc collect中通过参数0清空垃圾收集器,但它正在使应用程序崩溃 您能否就需要注意的基本事项、避免此类问
Jacob如果没有看到您的任何代码,就很难给出具体的建议 但是,我强烈建议您运行一个内存分析工具,如或。这些工具将向您展示代码的哪些部分从未发布过,并对您进行所需的调整非常有帮助。一般来说,您不必调用
GC。由于未使用的对象将每隔几秒钟自动收集一次,因此请自行收集
至于什么可以阻止对象被收集,归根结底是它们被“扎根”。根包括:
- 任何静态引用
- 运行循环持有的任何引用(您的
应用程序是此处最接近的对象)
- 当前页面或其后面任何页面上显示的任何内容
- 上述任何引用的任何内容(包括UI事件),或上述任何内容(等)引用的任何内容
在上面的场景中,这些对象以及它们持有引用的任何对象都不能是GC'd。关于建议:
- 避免将任何内容定义为
static
- 小心
应用程序持有多少对象
- 避免使用允许后堆栈增长到ulimited级别的导航模型
- 可以考虑在页面/视图模型的
OnNavigatedFrom
方法中将对大型数据集的引用设置为null,并在OnNavigatedTo
我建议使用7.1 SDK附带的。它将告诉您内存中有哪些对象以及原因。Windows Phone实际上附带了它自己的内存分析器(普通的.NET内存分析器无法使用它)。