2011-01-24 40 views
6

我有一个网站,一些用户可以上传他的DLL。我需要从这个DLL创建一个实例并调用一个特定的方法。此外,我需要在1个进程中使用多个dll,因此它不是我使用System.Diagnostics.Process的选项。如何确定我的.NET应用程序中的内存使用情况

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

+0

顺便说一句,如果我们其中一个人回答了您的问题,请您通过点击问题旁边的勾号接受答案。谢谢 – Basic 2011-01-25 20:38:31

回答

7

在.net中的内存使用情况是很难衡量 - 这将取决于很多像是否垃圾收集运行的因素,如何架构的很多已经被加载等

你可以看一下内存使用量使用performance counters

每个进程级别为假设你已经在考虑一个半信任环境中运行的用户代码的安全性影响的时刻,你需要使用一个AppDomain来加载DLL - 这样它可以卸载而无需重新启动整个网站/工作池

+0

非常感谢你的回答。 我将尝试更精确地解释我需要什么。 :) 我的项目是一个开发者的游戏,他们需要上传他们的代码并相互“对抗”。 因此,在有一些上传的DLL之后,我们可以创建一轮以确定谁获胜:)。 我想过在一个单独的过程中创建这一轮,在这个过程中,我将创建实例并从上传的DLL调用方法。而且我需要限制这些实例的内存使用量,所以如果开发者用完了这个限制 - 他就会失去这一轮。 – Andrey 2011-01-24 23:32:20

5

如果你使用.NET 4.0看一看MemoryFailPoint

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

相关问题