Комментарии 6
Интересно, как работает
Возможно, есть API для перечисления объектов кучи.
DumpHeap
в SOS.DLL для windbg.Возможно, есть API для перечисления объектов кучи.
Для профилировщиков — более чем уверен что есть =)
Есть! Microsoft.Diagnostics.Runtime.
Да еще и в виде NuGet-package.
Пример:
Чтобы проитерироваться:
А еще возможности инспекции тредов и т.д.
Да еще и в виде NuGet-package.
Пример:
int pid = Process.GetProcessesByName("HelloWorld")[0].Id;
using (DataTarget dataTarget = DataTarget.AttachToProcess(pid, 5000))
{
string dacLocation = dataTarget.ClrVersions[0].TryGetDacLocation();
ClrRuntime runtime = dataTarget.CreateRuntime(dacLocation);
// ...
}
Чтобы проитерироваться:
ClrHeap heap = runtime.GetHeap();
foreach (ulong obj in heap.EnumerateObjects())
{
ClrType type = heap.GetObjectType(obj);
ulong size = type.GetSize(obj);
Console.WriteLine("{0,12:X} {1,8:n0} {2}", obj, size, type.Name);
}
А еще возможности инспекции тредов и т.д.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Снимаем дамп объектов с памяти .Net приложения