Область памяти, используемая неуправляемым компонентом для выделения / освобождения
Допустим, управляемое приложение.net взаимодействует с неуправляемым компонентом через InterOP. Если я должен отладить проблему с памятью; где именно неуправляемый компонент выделяет память? Это та же куча, которая используется GC (в чем я сомневаюсь) или это какие-то другие области? Я делаю отладку Windbg и задаюсь вопросом, могу ли я посмотреть на распределение неуправляемым компонентом с помощью команд SoS, таких как! Dumpheap?
1 ответ
В Windbg вы можете использовать !heap
проверить родную кучу памяти. Куча GC (управляемая) не связана с использованием кучи собственного кода, хотя на некотором уровне я предполагаю, что управляемая куча должна быть отображена (внутри CLR) в одну или несколько собственных куч.
SoS используется исключительно для отладки управляемого кода - WinDbg - это, прежде всего, инструмент для отладки собственного кода.
umdh.exe также может быть полезен, хотя я не пробовал это в приложении в смешанном режиме.