Использование API точечной памяти для создания нескольких снимков одного и того же файла.dmv
Я пытаюсь профилировать мой конкретный код с помощью API точки памяти. Когда я вызываю метод dump(), я ожидаю сделать снимок и сохранить его в dir.
Я пытаюсь сделать два снимка здесь один перед выполнением моего кода и после выполнения моего кода с помощью метода dump().
Можно ли создать оба снимка в одном и том же выходном файле, как мы можем сделать это из автономной точечной памяти?
Ценю ваше предложение. Ниже приведен фрагмент кода
SelfAttach.Attach(new SaveSnapshotProfilingConfig
{
ProfilingControlKind = ProfilingControlKind.Api,
SaveDir = "D:\\SelfProfiling",
RedistDir = "D:\\Softwares\\JetBrains.Profiler.SelfSdk.2017.2.2",
ProfilingType = ProfilingType.Memory,
ListFile = "D:\\snapshot_list.xml"
});
while (SelfAttach.State != SelfApiState.Active)
{
Thread.Sleep(250); // wait until API starts
}
if (MemoryProfiler.IsActive)
{
MemoryProfiler.Dump();
MyMethodTobeProfiled();
MemoryProfiler.Dump();
}
if (MemoryProfiler.CanDetach)
MemoryProfiler.Detach();
2 ответа
Я предполагаю, что вы можете использовать dotMemory Command Line Profiler вместо "Self profiling" API для удовлетворения ваших потребностей.
Запустите средство командной строки dotMemory. Определите, что профилировщик уже подключен к вашему приложению, для этого вам нужно проанализировать вывод процесса CLT dotMemory.
Итак, псевдокод, чтобы получить то, что вам нужно
dotMemory.exe attach --service-output --use-api "your_app_PID"
// then the message will be printed to output
// ##dotMemory["connected",{"pid":your_app_PID,"name":"your_app_NAME.exe"}]
wait for this message
// the rest of your code remains the same
// and you need only JetBrains.Profiler.Windows.Api.dll
// no more need JetBrains.Profiler.Windows.SelfApi.dll
if (MemoryProfiler.IsActive)
{
MemoryProfiler.Dump();
MyMethodTobeProfiled();
MemoryProfiler.Dump();
}
if (MemoryProfiler.CanDetach)
MemoryProfiler.Detach();
Подробнее о профилировщике командной строки dotMemory здесь
Можно ли создать оба снимка в одном и том же выходном файле, как мы можем сделать это из автономной точечной памяти?
Снимок - это обычно куча файлов. .dmw
это архив снимка. Это дизайн сейчас. Причина заключается в возможности немедленно начать отправку снимка на удаленный хост. Это требование R#.