我想在appdomain中托管一个exe并为其分配CPU和内存上限,以便它不会使用超过指定的处理能力。这可能吗?怎么做?
答案 0 :(得分:3)
据我所知,你不能直接限制最大内存。
但是,从.NET 4开始,如果AppDomain.MonitoringSurvivedMemorySize
设置为AppDomain
,true
属性中当前由{{1}}分配的内存可用。您可以启动监视程序线程来监视分配。
答案 1 :(得分:1)
在.NET 4.0中看起来有这个要求的解决方案
答案 2 :(得分:0)
即使Windows性能监视器也不允许您通过AppDomain查看CPU使用情况 - 因为AppDomains是CLR的逻辑结构,并且操作系统不知道唯一的CPU使用情况跟踪处于进程级别 - 如果有一种方法可以限制你甚至无法监控的东西。
你想要这样做的原因究竟是什么?为什么您不希望您的应用程序使用它可用的所有资源?如果只是确保有足够的开销来运行其他进程的情况,你不能只是将线程的优先级设置得非常低并让Windows调度程序弄明白吗?
答案 3 :(得分:0)
我知道做这样的事情的唯一方法是使用HyperV(或类似产品)并将应用程序划分到不同的虚拟机中。但这并不是一个廉价或简单的解决方案。