.NET 分配分析
Posted
技术标签:
【中文标题】.NET 分配分析【英文标题】:.NET allocations profiling 【发布时间】:2010-04-23 08:56:22 【问题描述】:我需要一种方法来跟踪 .NET 应用程序中在调试我的应用程序过程中的单个步骤中发生的所有分配。我的意思是,当我在调试器中,单步执行代码时,我想单步查看发生了什么分配。有没有工具或方法可以做到这一点?我尝试了几个内存分析器,包括 CLR 分析器、JetBrains 和 .NET Memory Profiler 3.5,但它们似乎都没有提供这种功能。
【问题讨论】:
【参考方案1】:您可以将 WinDBG 与类似的东西一起使用
.load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll
.logopen log.txt
bp mscorwks!FastAllocateObject "!DumpMT poi(@esp+4); g"
bp mscorwks!AllocateObject "!DumpMT poi(@esp+4); g"
这应该会在 log.txt 中传递给这些函数的所有 AllocateObject/FastAllocateObject 和转储 MethodTable 上中断。随着分配对象数量的增加,它可能会变得非常慢
【讨论】:
以上是关于.NET 分配分析的主要内容,如果未能解决你的问题,请参考以下文章