是否可以列出存儲在堆中的所有對象。 我願做這樣的事情:如何在.Net中列出堆中的所有託管對象?
IEnumerable<GCHandle> listOfObjectsInHeap = GetListOfObjectsFromHeap();
是否可以列出存儲在堆中的所有對象。 我願做這樣的事情:如何在.Net中列出堆中的所有託管對象?
IEnumerable<GCHandle> listOfObjectsInHeap = GetListOfObjectsFromHeap();
您可以使用Profiling API來實現此目的。不幸的是沒有託管代碼。
我不知道任何管理功能,可以讓你做到這一點的。您可以使用HeapWalk函數檢索這些信息。 Here's an example使用它(它創建一個新的堆,但你可以檢索當前進程堆與GetProcessHeap)。
使用ClrMD庫,您可以連接到您自己的進程並檢查堆。
但是,對正在運行的進程使用ClrMD會限制信息的可用性,因爲當您試圖對其進行操作時堆可能會發生變化。
http://blogs.msdn.com/b/dotnet/archive/2013/05/01/net-crash-dump-and-live-process-inspection.aspx
這是最好的方法。 – 2014-02-12 21:25:41
爲什麼要這樣做?你想用這些信息做什麼? – luke 2010-05-29 08:59:18