我正在使用c#和银光平台在Windows手机中创建一款游戏。我是这项技术的新手,目前面临内存泄漏问题。
根据我所做的研究和研究,我尝试了所有的事情,包括事件,字符串和垃圾收集器的使用。
任何人都可以提供最佳利用垃圾收集器和内存管理的常见技巧,因为它现在似乎是问题。当我的垃圾收集器达到5个大小时,它就会停止收集新东西并且应用程序正在崩溃。
我也尝试清空gc collect中传递参数0的垃圾收集器,但它正在崩溃应用程序。
您能否指导并帮助我们注意基本事项,遵循过程以避免此类问题并最好地使用GC收集?
提前致谢, 雅各布
答案 0 :(得分:3)
一般情况下,您永远不必须自己调用GC.Collect
,因为每隔几秒就会自动收集一次未使用的对象。
至于什么阻止对象被收集,它归结为他们被" rooted"。根源包括:
Application
是最接近的东西)在上述场景中,那些对象和他们持有引用的任何对象都不能是GC' d。至于建议:
static
Application
OnNavigatedFrom
方法中将大型数据集的引用设置为null,并在OnNavigatedTo
我建议使用7.1 SDK附带的Windows Phone Profiler。它会告诉你内存中的对象和原因。
答案 1 :(得分:0)
如果没有看到任何代码,很难给出具体的建议。
但是,我强烈建议您运行内存分析工具,例如ANTS Memory Profiler或.Net Memory Profiler。这些工具将向您显示代码的哪些部分从未发布,并且非常有助于您进行所需的调整。