我目前正在使用C#和SharpDX为Windows8开发一款地铁游戏。这个项目进展顺利,但最近有必要开始追踪内存泄漏,我真的不确定从哪里开始。
Visual Studio 11中内置的内存探查器还不适用于metro应用程序,WinDBG似乎无法连接到metro应用(除非我使用错误),而且我很难找到有关在.NET 4.5 for metro中查看托管分配的任何信息。
有人有这方面的经验吗?有好的地方可以开始寻找吗?有人成功地使用工具来检测metro应用程序中的内存泄漏吗?
看起来我实际上可以使用WinDbg,只是它不适用于侵入模式。我的错。
至少目前,我认为内存泄漏不是由Metro或SharpDX引起的。
看看这个:内存泄漏C#
(或者只是在SO中搜索"C#内存泄漏"。)
一旦您完成了从上述链接/搜索查询中收集的内容清单,然后继续检查与SharpDX/Metro相关的代码。最好的指导方针来自我小时候的妈妈:"玩完后自己清理。"处理完对象后,不要让DB、文件或内存流打开的时间超过你需要的时间。这是许多人内存泄漏问题的原因,包括我的。
我建议您使用http://msdn.microsoft.com/en-us/magazine/jj721593.aspx.关于内存泄漏有很多解释。