首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分析内存转储以查找泄漏

分析内存转储以查找泄漏
EN

Stack Overflow用户
提问于 2013-10-22 15:37:32
回答 3查看 8.8K关注 0票数 5

我们有一个c# .NET应用程序,其中有一个内存泄漏。我使用procdump从正在运行的应用程序实例中从生产机器获得内存转储。生产机器正在运行32位Windows和.NET 4.0。

exe配置设置为.net 4.0

代码语言:javascript
运行
复制
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />

当我把转储拉到我的开发框,windows 8.1 64位,并打开它与VS 2013,转储最初是打开罚款。但是,当我单击调试托管内存操作时,会收到以下错误消息:

此过程中使用的CLR版本不支持内存分析。

对于Windows和托管内存环境中的内存泄漏,我是新手,对所涉及的工具几乎一无所知。我做了谷歌搜索我得到的错误,但没有找到任何东西。任何帮助都是非常感谢的。如果我错过了一些明显的东西,我很抱歉

EN

回答 3

Stack Overflow用户

发布于 2013-10-22 15:58:35

我不知道是否可以使用procdump来查找.NET中的内存泄漏,我尝试过的一种有效方法是:使用Windbg和SOS。有两篇文章解释了如何使用Windbg+ SOS跟踪.NET内存泄漏:

  1. 你的泄密在哪里?[使用WinDbg、SOS和GCRoot诊断.NET内存泄漏]
  2. 使用windbg调试托管代码内存泄漏和内存转储

如果您不喜欢Windbg,那么工具DebugDiag在跟踪内存泄漏方面也是非常有效的工具。

票数 2
EN

Stack Overflow用户

发布于 2014-08-27 09:59:42

请参阅此链接,它仅适用于在.Net 4.5下运行的进程。

在开始之前,关于本文中讨论的"Debug托管内存“特性有几点需要注意:

  1. 该选项仅可从Visual 2013的最终版本中的转储摘要页中获得。如果您使用的是高级或专业版,您将不会看到该选项
  2. 针对转储文件收集的进程必须运行在.NET 4.5或更高版本上。如果转储是在3.5或之前收集的,则选项将不会出现,如果它是在4.0上收集的,则它将无法使用错误消息启动。
票数 1
EN

Stack Overflow用户

发布于 2016-02-09 11:44:45

从Windows7 /Server 2008 R2开始,有一种方法可以创建一个进程的克隆并创建这个克隆的转储,这样您关心的进程就不需要被挂起。在捕获转储时,使用procdump -r来使用此特性。 您还可以使用捕获ETW跟踪并使用PerfView分析数据。

https://superuser.com/questions/846079/how-can-i-create-a-memory-dump-of-a-production-system-without-affecting-performa/846156#846156

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19522329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档