Для этого вы можете использовать API профилирования. К сожалению, не в управляемом коде.
Ответ 2
Используя библиотеку ClrMD, вы можете подключиться к своему собственному процессу и проверить кучу.
Однако использование ClrMD в отношении запущенного процесса, как известно, ограничивает доступную информацию, поскольку куча может меняться, когда вы пытаетесь ее пропустить.
Мне не известно о какой-либо управляемой функции, которая позволяет вам это делать. Вы можете получить эту информацию, используя функцию HeapWalk. Вот пример его использования (он создает новую кучу, но вы можете получить текущую кучу процесса с GetProcessHeap).