如何确定.NET应用程序中的内存使用情况

时间:2011-01-24 23:23:05

标签: .net memory-management

我有一个网站,有些用户可以上传他的dll。我需要从这个DLL创建一个实例并调用一个特定的方法。此外,我需要在1个进程中使用几个dll,因此我不能选择使用System.Diagnostics.Process。

有没有办法确定此方法调用多少内存或在应用程序运行时限制它? 在此先感谢您的任何帮助

4 个答案:

答案 0 :(得分:8)

.Net中的内存使用很难衡量 - 它将取决于很多因素,例如垃圾收集运行,加载了多少框架等等。

您可以使用performance counters

查看每个进程级别的内存使用情况

假设您已经考虑过在半可信环境中运行用户代码的安全隐患,您需要使用AppDomain来加载DLL - 这样就可以在不重新启动的情况下卸载它整个网站/工人池

答案 1 :(得分:5)

如果使用.NET 4.0,请查看MemoryFailPoint

另一个建议:.NET 4.0现在提供了监控AppDomain(AppDomain.MonitoringIsEnabled Property)内存消耗的工具。例如,如果AppDomain使用太多内存,您可以使用主AppDomain轮询和拆除AppDomain。

答案 2 :(得分:3)

您可以使用GC.GetTotalMemory作为跟踪内存使用情况的替代方法吗?

http://msdn.microsoft.com/en-us/library/system.gc.gettotalmemory.aspx

答案 3 :(得分:0)

说真的,你不能超过Red Gates Ants Memory Profiler - 免费试用14天......