Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在托管Win8 metro应用程序中查找内存泄漏?_C#_Memory Management_Windows 8_Managed_Microsoft Metro - Fatal编程技术网

C# 在托管Win8 metro应用程序中查找内存泄漏?

C# 在托管Win8 metro应用程序中查找内存泄漏?,c#,memory-management,windows-8,managed,microsoft-metro,C#,Memory Management,Windows 8,Managed,Microsoft Metro,我目前正在使用C#和SharpDX为Windows8开发一款metro游戏。该项目进展顺利,但最近需要开始跟踪内存泄漏,我不确定从哪里开始 Visual Studio 11中的内置内存探查器还不能用于metro应用程序,WinDBG似乎无法连接到metro应用程序(除非我使用不正确),而且我很难在.NET 4.5 for metro中找到有关查看托管分配的任何信息 有没有人有这方面的经验?有什么好地方可以开始找吗?是否有人成功地使用工具来检测metro应用程序中的内存泄漏?至少现在,我认为内存泄

我目前正在使用C#和SharpDX为Windows8开发一款metro游戏。该项目进展顺利,但最近需要开始跟踪内存泄漏,我不确定从哪里开始

Visual Studio 11中的内置内存探查器还不能用于metro应用程序,WinDBG似乎无法连接到metro应用程序(除非我使用不正确),而且我很难在.NET 4.5 for metro中找到有关查看托管分配的任何信息


有没有人有这方面的经验?有什么好地方可以开始找吗?是否有人成功地使用工具来检测metro应用程序中的内存泄漏?

至少现在,我认为内存泄漏不是由metro或SharpDX造成的

看看这个:

(或者直接搜索“C#内存泄漏”。)


一旦您查看了从上述链接/搜索查询中收集的内容清单,然后继续检查与SharpDX/Metro相关的代码。最好的指导原则来自我小时候的妈妈:“玩完游戏后自己清理。”处理完对象后,不要让数据库、文件或内存流的打开时间超过需要的时间。这就是导致许多人(包括我的)内存泄漏问题的原因。

看起来我实际上可以使用WinDbg,它只是不能在入侵模式下工作。我的错。

我建议你用这个。关于内存泄漏有很多解释。

我现在还不会花太多时间在这个问题上。WinRT本身存在内存泄漏的可能性很大,这些泄漏将在RTM之前修复。你只需要花很多时间来解决暂时的问题。到那时也应该有工具支持。你最好通过应用程序验证程序运行这个。“你能得到一个通过商店发布的使用SlimDX的应用程序的几率应该很小。”汉帕桑-我同意。他可能想验证他是否能够将其发布到商店,我的理解是,除非SharpDX仅使用WinRT配置文件,否则发布它的机会微乎其微。查看SharpDX的项目页面,他们列出的“功能”会让您相信它支持WinRT配置文件,因为它使用了“Metro Style”这个词,即使是微软自己的产品也只是表示某种设计风格。当然,截至2012年3月30日,SharpDX甚至不支持Windows 8 CP。到目前为止,SharpDX的夜间版本确实在Win8 CP的WACK套件下构建并通过验证。我知道微软自己的一些预RTM代码中可能存在内存泄漏,但我真的只是在寻找关于我的分配的信息。对于metro应用程序,甚至System.GC.GetTotalMemory()似乎也不存在。我不想把我的搜索推迟太久,否则我担心我会在RTM之后花时间做这件事,这可能会耽误项目的进度。@BenSmith-在Windows 8 RC发布之前,你将不得不用旧的方式来做。确定泄漏的位置,确保您以正确的方式执行所有操作,并等待Visual Studio内存配置文件功能支持WinRT配置文件。我已经花了一些时间处理常见的可疑问题(流、IDisPobles、事件),但我更喜欢寻找任何可以让我了解当前分配内容的工具或函数。即使只是能够获得一个托管分配列表,也将对发现真正的问题领域有巨大的帮助。与其仅仅发布一个链接(发表评论会更好),您至少应该指出文章中讨论的一些技术要点。