c# - 我如何在 C#.Net 中查看堆和堆栈中的对象

标签 c# .net heap-memory stack-memory

是否可以在每行执行后查看堆栈和堆的内容。我想看看它,因为它可以清楚地说明 .Net 中的内存分配和释放。与你的

如果有任何文件或链接可以消除我对您的回答的疑虑,请分享。

最佳答案

SOS 或 PssCor是一个很好的起点,旁边WinDbg .

一旦你解决了这个问题;将 WinDbg 附加到您的进程,加载调试器扩展。例如:

.load C:\pathtoextensions\psscor4.dll

之后,您可以发出 !dumpheap!dumpstack 命令。

这两个命令的输出都非常原始。 !dumpheap -stat 将为您提供堆的“统计”概览。所有分配的类型、分配的数量和总字节数。

这不是一项非常简单的任务。如果您以前没有使用过 WinDbg,则需要一段时间才能充分练习。

您可以做的是使用 !bpmd 在方法上设置断点,并使用上面提到的命令,然后使用 p 命令跳过,并重新运行命令。

我确定还有其他商业工具,例如 ANTS ProfilerdotTrace这可能会完成工作 - 但我对这两种工具都没有太多经验。

开始后,您可以询问有关 SOS 或 Psscor 的(新的)更具体的问题。

关于c# - 我如何在 C#.Net 中查看堆和堆栈中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7547349/

相关文章:

.net - 我如何使用 Fiddler 查看 ViewState 的总大小?

c# - 具有引用类型和 GC 的结构?

java - 如何在 j2me 中通过电话获取最大可用堆大小?

c# - 在 Combobox 中按 Enter 键清除文本

c# - JsonServiceClient 返回具有正确属性但空值的响应

c# - 我应该如何为其他开发人员使用 C# 在他们的项目中使用库 (.dll) 文件?

c# - PostSharp:将建议应用于外部类型

java - 单一方法的内存泄漏

c# - 如何在 Visual Studio 2015 中创建可执行文件

c# - 从 ASP.Net Core 1.1 迁移到 2.0 时出现 BadImageFormatException