首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在托管.NET应用程序中查找本机内存泄漏,DebugDiag缺少堆栈跟踪

在托管.NET应用程序中查找本机内存泄漏,DebugDiag缺少堆栈跟踪
EN

Stack Overflow用户
提问于 2014-12-30 21:34:56
回答 1查看 1.5K关注 0票数 3

LeakTrack在DebugDiag中没有捕获堆栈跟踪,所以不知道从这里到哪里。

我有一个.NET应用程序(作为windows服务运行的NServiceBus进程),它存在内存泄漏。在5-6天的过程中生长到10 to左右。

我使用!address –summary在WinDbg中做了一个procdump和基本分析。我看到堆提交大小为8.6GB。

接下来,我在转储中运行DebugDiag以获取托管内存。托管内存中根本没有任何危险标志,因此我尝试查看本机分配。

所以I DebugDiag (2.1.0.7),并选择了

在监视泄漏时立即记录呼叫堆栈(AKA "FastTrack")注意:不建议在监视时间超过15分钟时使用

然后我运行了30分钟(与警告相反)。在运行分析时,我会收到一条消息,即它无法获得调用堆栈,因为我要么运行时间不超过15分钟(我运行了),要么需要设置“立即开始记录呼叫堆栈”(我做了)。

所以我决定再试一次。这次我把它设置为运行2个小时,但没有将其设置为“立即开始录制”。同样的信息。

下面是来自9GB procdump的虚拟内存摘要(没有运行泄漏检测)

那么,我需要做什么才能从DebugDiag获得调用堆栈呢?我的罪魁祸首似乎存在于已承诺的记忆中(我不确定我是否真正理解了在这种情况下的保留和承诺)。但不知道该怎么找出罪魁祸首是什么。

还不清楚为什么DebugDiag认为存在8TB内存(这是在虚拟机上运行的,不确定这是否相关)。

EN

回答 1

Stack Overflow用户

发布于 2015-01-07 15:10:37

您可以使用WPA () VirtualAlloc跟踪可以通过使用虚拟分配配置文件获得,这里是一个9分钟的视频,解释了一个示例VirtualAlloc相关问题的分析

使用http://channel9.msdn.com/events/Build/BUILD2011/HW-977P理解http://channel9.msdn.com/events/Build/BUILD2011/HW-977P的使用

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

https://stackoverflow.com/questions/27712912

复制
相关文章

相似问题

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