2016-08-19 83 views
0

是否有一個API可以在.NET中具有類似於WinDBG-SOS的功能?查找垃圾回收根

給定一個對象,我想知道在同一個進程中有多少根在運行時從C#保持活着。

+0

我不知道,它可能在運行時的水平。優化的代碼可以跳過堆棧並直接進入CPU。所以我想知道你對這個API有什麼輸出? –

+0

沒有API。你想要一個內存分析器,其中有幾個。您最喜愛的網頁搜索引擎可以幫助您。 –

+0

@ Sergey.quixoticaxis.Ivanov基本上可以通過WinDBG實現;找到記憶中的物體和它們的根。 –

回答

0

是的。如果不是,所有這些配置文件如何工作?這被稱爲分析API:https://msdn.microsoft.com/en-us/library/ms404386(v=vs.110).aspx

API本身是非託管的(COM對象)。但是沒有任何東西可以阻止你通過RCW從託管代碼中使用它。

我不確定,如果你能從自己內部剖析一個過程,我不確定。我認爲探查器必須處於另一個過程中。雖然我沒有看到有任何問題需要進程來處理通信,並通過一些通信方法(如命名管道)將數據反饋回配置文件進程。

+0

謝謝,我稍後會看看文檔;你也有任何鏈接到一些例子? –

+0

對不起,我可能錯了能夠寫一個託管分析器:( http://stackoverflow.com/questions/5736845/is-is-possible-to-use-profiling-api-right-from-c你可以在那篇文章中找到有趣的博客文章 –

+0

深入挖掘我發現了更有趣的東西: http://www.topholt.com/c-clr-profiler/ http://research.microsoft.com/en-us/ um/redmond/projects/pex/wiki/Microsoft.ExtendedReflection.html –