获得Silverlight浏览器应用程序内存使用的最准确方法

时间:2011-11-04 19:59:57

标签: c# silverlight

目前我正在追踪Silverlight 4应用程序中的内存泄漏问题。我可以看到iexplorer.exe使用的内存使用任务管理器逐渐增加。

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

我有用于跟踪内存泄漏本身的开发人员工具,所以我不是在寻找它,而是在我的Silverlight代码中使用一种方法来获取总IE内存使用量,或至少更接近地表示实际使用的内容Silverlight而不是垃圾收集器认为正在使用的。

3 个答案:

答案 0 :(得分: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获得它)。

答案 1 :(得分:0)

尝试使用visual studio profiler

https://blogs.msdn.com/b/profiler/archive/2010/04/26/vs2010-silverlight-4-profiling.aspx

  

“对于.NET内存分析,请在步骤1中使用”VSPerfClrEnv / samplegc“或”VSPerfClrEnv / samplegclife“来获取分配分析或分配以及生命周期分析。”

答案 2 :(得分:0)