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

And*_*rey 8 .net memory-management

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

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

Bas*_*sic 8

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

您可以使用性能计数器查看每个进程级别的内存使用情况

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


The*_*rff 5

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

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