2011-11-04 70 views
3

当前我正在跟踪Silverlight 4应用程序中的内存泄漏问题。我可以使用任务管理器逐渐观察iexplorer.exe使用的内存。获取Silverlight浏览器应用程序内存使用的最准确方法

但是,我正在寻找Silverlight代码中的一种方式来告诉应用程序当前在IE进程中使用了多少内存。我已经尝试GC.GetTotalMemory,但它并不代表iexplorer的实际内存使用情况。

我有追踪内存泄漏本身的开发工具,所以我不是在寻找,而是我的Silverlight代码中的一个方法来获得完整的IE内存使用情况,或者至少更接近地表示实际使用的内容通过Silverlight取代垃圾收集器认为正在使用的内容。

回答

1

GC分配的内存是SL应用程序使用的内存的动态部分的良好估计。否则,你不清楚你需要什么其他类型的内存使用。

如果您需要其他数据,请考虑先使用VaDump(http://msdn.microsoft.com/en-us/magazine/dd882521.aspx链接自Using VADump to track memory usage - OpenProcess Failed c0000034)。当你计算出你感兴趣的部分/类型的内存时,它应该相对容易得到这些信息(你可能需要用本地调用收集它,但可能全部都是PInvoke)。我想你所寻找的所有信息都可以通过性能计数器 - 使用示例 - http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.countername.aspx(但我不认为你可以从SL获得)。

+0

所以我正在寻找的是目前正在使用的所有类型的内存的组合。 (什么Windows任务管理器报告)。例如,在一个快照中,我的Generation 2和Large Object Heap之间有18.05MB和3.168 MB,但Unmanaged有110.1 MB。因此,我正在寻找一种通过托管代码获取非托管金额或总金额的方法,如果可能的话。 – Mmerrell

相关问题