VaDump 未列出 DLL 的内存使用情况
我正在尝试使用 VADump 分析大型 WPF 应用程序。我对 DLL 的工作集最感兴趣。但是,当我使用命令 vadump -sop [processID] 在应用程序上运行 VADump 时,此类别中没有显示任何信息。它有标头,但没有列出 DLL。
如果我在较小的应用程序上运行 VADump,我确实会得到结果。我正在使用最新版本的 VADump。这是在 Windows 7 x64、.Net 4.0 和 Visual Studio 2010 Pro 上。
我看过的问题:
使用 VADump 跟踪内存使用情况 - OpenProcess 失败 c0000034
有什么想法吗?我知道 VADump 是一个较旧的工具。
I am trying to profile a large WPF application using VADump. I am most interested in the working set of DLLs. However, when I run VADump on my application using the command vadump -sop [processID], there is no information displayed in this category. It has the headers but no DLLs are listed.
If I run VADump on a smaller app, I do get results. I am using the latest version of VADump. This is on Windows 7 x64, .Net 4.0, and Visual Studio 2010 Pro.
Questions I've looked at:
Using VADump to track memory usage - OpenProcess Failed c0000034
Any thoughts? I know VADump is an older tool.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这主要是因为 DLL 不拥有内存。一个过程就可以。尤其是托管堆,垃圾收集堆由 AppDomain 拥有,并由加载到其中的所有 DLL 共享。可能有一个非托管 DLL 创建了自己的堆,COM 服务器通常会这样做。但这种情况很少见。
VADump 也不会对诊断 gc 堆有任何帮助,请使用 .NET 特定的内存分析器。例如,Microsoft 提供免费的 CLR Profiler。但它不值得你为此付出的钱。已经有无数关于分析器的问题,请使用搜索框。
That mostly because DLLs don't own memory. A process does. Especially a managed one, the garbage collected heap is owned by an AppDomain and shared by all DLLs loaded into it. There might be an unmanaged DLL that created its own heap, COM servers typically do. But it's rare.
VADump isn't going to be any help diagnosing the gc heap either, use a .NET specific memory profiler. The free CLR Profiler available from Microsoft for example. It isn't worth the money you pay for it though. There are a gazillion questions about profilers already, use the Search box.