czy można wyświetlić listę wszystkich obiektów przechowywanych w stercie. chciałbym zrobić coś takiego:Jak wyświetlić listę wszystkich zarządzanych obiektów w stercie w .Net?
IEnumerable<GCHandle> listOfObjectsInHeap = GetListOfObjectsFromHeap();
czy można wyświetlić listę wszystkich obiektów przechowywanych w stercie. chciałbym zrobić coś takiego:Jak wyświetlić listę wszystkich zarządzanych obiektów w stercie w .Net?
IEnumerable<GCHandle> listOfObjectsInHeap = GetListOfObjectsFromHeap();
Możesz użyć Profiling API, aby to osiągnąć. Niestety nie w zarządzanym kodzie.
nie jestem świadomy każdej zarządzanej funkcji, która pozwala to zrobić. Możesz pobrać te informacje za pomocą funkcji HeapWalk. Here's an example korzystania z niego (tworzy nową stertę, ale można odzyskać bieżącą stertę procesu za pomocą GetProcessHeap).
Za pomocą biblioteki ClrMD można połączyć się z własnym procesem i sprawdzić stertę.
Jednak używanie ClrMD przeciwko działającemu procesowi ogranicza dostępną informację, ponieważ sterty mogą się zmieniać, gdy próbujesz to zrobić.
http://blogs.msdn.com/b/dotnet/archive/2013/05/01/net-crash-dump-and-live-process-inspection.aspx
To jest najlepszy sposób. –
dlaczego chcesz to zrobić? co chcesz zrobić z tymi informacjami? – luke