es posible enumerar todos los objetos almacenados en el montón. me gustaría hacer algo como esto:¿Cómo enumerar todos los objetos administrados en el montón en .Net?
IEnumerable<GCHandle> listOfObjectsInHeap = GetListOfObjectsFromHeap();
es posible enumerar todos los objetos almacenados en el montón. me gustaría hacer algo como esto:¿Cómo enumerar todos los objetos administrados en el montón en .Net?
IEnumerable<GCHandle> listOfObjectsInHeap = GetListOfObjectsFromHeap();
Puede usar el Profiling API para lograrlo. Lamentablemente no en el código administrado.
No estoy al tanto de cualquier función administrado que le permite hacer esto. Puede recuperar esta información utilizando la función HeapWalk. Here's an example de usarlo (crea un nuevo montón pero puede recuperar el montón de proceso actual con GetProcessHeap).
Utilizando la biblioteca ClrMD puede conectarse a su propio proceso e inspeccionar el montón.
Sin embargo, se sabe que el uso de ClrMD en un proceso en ejecución limita la información disponible, ya que el montón puede estar cambiando cuando se intenta recorrerlo.
http://blogs.msdn.com/b/dotnet/archive/2013/05/01/net-crash-dump-and-live-process-inspection.aspx
Esta es la mejor manera de hacerlo. –
¿por qué quieres hacer esto? ¿Qué quieres hacer con esta información? – luke