.NET分配分析

.NET分配分析,.net,profiling,memory-management,.net,Profiling,Memory Management,我需要一种方法来跟踪.NET应用程序中在调试应用程序的单个步骤中发生的所有分配。我的意思是,当我在调试器中单步执行代码时,我只想看一步发生了什么分配。有没有一种工具或方法可以做到这一点?我尝试了几种内存分析器,包括CLR分析器、JetBrains和.NET内存分析器3.5,但它们似乎都没有提供这种功能。您可以将WinDBG用于类似的功能 .load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll .logopen log.txt bp

我需要一种方法来跟踪.NET应用程序中在调试应用程序的单个步骤中发生的所有分配。我的意思是,当我在调试器中单步执行代码时,我只想看一步发生了什么分配。有没有一种工具或方法可以做到这一点?我尝试了几种内存分析器,包括CLR分析器、JetBrains和.NET内存分析器3.5,但它们似乎都没有提供这种功能。

您可以将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和dump MethodTable上都应该中断。。随着分配对象数量的增加,它可能会变得非常缓慢