【发布时间】:2010-09-15 12:02:38
【问题描述】:
我想在 appdomain 中托管一个 exe,并为其分配 CPU 和内存上限,这样它就不会使用超过分配的处理能力。这可能吗?如何做?
【问题讨论】:
我想在 appdomain 中托管一个 exe,并为其分配 CPU 和内存上限,这样它就不会使用超过分配的处理能力。这可能吗?如何做?
【问题讨论】:
据我所知,您不能直接限制最大内存。
但是,从 .NET 4 开始,如果 AppDomain.MonitoringIsEnabled 设置为 true,则当前由 AppDomain 分配的内存在 AppDomain.MonitoringSurvivedMemorySize 属性中可用。您可以启动一个看门狗线程来监控分配情况。
【讨论】:
【讨论】:
即使是 Windows 性能监视器也不允许您查看 AppDomain 的 CPU 使用情况 - 因为 AppDomain 是 CLR 的逻辑结构,操作系统不知道唯一的 CPU 使用情况跟踪是在进程级别 - 如果我会感到震惊有一种方法可以限制您甚至无法监控的内容。
您想要这样做的具体原因是什么?为什么您不希望您的应用程序使用所有可用的资源?如果只是为了确保有足够的开销供其他进程运行,难道你不能将线程的优先级设置得非常低,然后让 Windows 调度程序来解决吗?
【讨论】:
我知道做这种事情的唯一方法是使用 HyperV(或类似产品)并将您的应用程序分区到不同的虚拟机中。但这并不是一个便宜或简单的解决方案。
【讨论】: