2

我知道我可以查看某些计数器,例如内存使用情况,但我可以对单个应用程序域施加限制吗?

4

2 回答 2

3

我曾经在一个我们试图做类似事情的系统上工作。

使用常规的 .NET CLR,您只能获得非常粗糙的控件。您可以找出 AppDomain 正在使用多少内存,但它往往不是最新的,并且随着内存压力的增加 - 变得完全不可靠。

但是,如果您愿意达到通过 C++ 托管 CLR 并使用CLR Hosting APIs的水平,则可能有一种方法可以做到这一点。

我被告知可以做一些事情,例如拦截来自托管 CLR 的内存分配请求。您也可以限制 I/O 请求和 CPU 利用率。

于 2012-07-06T00:29:55.043 回答
2

不,没有内置机制来限制 .Net 应用程序在 AppDomain 级别(甚至在进程级别)上的任何资源使用。它包括内存使用率、网络使用率、CPU 使用率。

您可以在 AppDomains 的 .Net 级别上设置权限限制(代码访问安全),但控制量基本上停在那里。

唯一的内置机制是限制整个进程的内核使用 CPU。剩下的就交给申请处理了。

于 2012-07-06T00:12:39.203 回答