我有一个网站,有些用户可以上传他的dll。我需要从这个DLL创建一个实例并调用一个特定的方法。此外,我需要在1个进程中使用几个dll,因此我不能选择使用System.Diagnostics.Process。
有没有办法确定此方法调用多少内存或在应用程序运行时限制它? 在此先感谢您的任何帮助
答案 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天......