C# 如何在.Net中列出堆中的所有托管对象?

C# 如何在.Net中列出堆中的所有托管对象?,c#,.net,memory,memory-management,heap,C#,.net,Memory,Memory Management,Heap,是否可以列出堆中存储的所有对象。 我想这样做: IEnumerable<GCHandle> listOfObjectsInHeap = GetListOfObjectsFromHeap(); IEnumerable listOfObjectsInHeap=GetListOfObjectsFromHeap(); 我不知道有任何托管函数允许您执行此操作。您可以使用函数检索此信息。使用它的方法(它创建了一个新堆,但您可以使用检索当前进程堆)。您可以使用来实现这一点。不幸的是,不在托管代码

是否可以列出堆中存储的所有对象。 我想这样做:

IEnumerable<GCHandle> listOfObjectsInHeap = GetListOfObjectsFromHeap();
IEnumerable listOfObjectsInHeap=GetListOfObjectsFromHeap();

我不知道有任何托管函数允许您执行此操作。您可以使用函数检索此信息。使用它的方法(它创建了一个新堆,但您可以使用检索当前进程堆)。

您可以使用来实现这一点。不幸的是,不在托管代码中。

使用ClrMD库,您可以连接到自己的进程并检查堆

但是,已知对正在运行的进程使用ClrMD会限制可用信息,因为在尝试遍历堆时,堆可能会发生变化


为什么要这样做?你想用这些信息做什么?这是最好的方法。链接现在被“禁止”