AppDomain 的 CPU 和内存上限
Posted
技术标签:
【中文标题】AppDomain 的 CPU 和内存上限【英文标题】:CPU and Memory Cap for an AppDomain 【发布时间】:2010-09-15 12:02:38 【问题描述】:我想在 appdomain 中托管一个 exe,并为其分配 CPU 和内存上限,这样它就不会使用超过分配的处理能力。这可能吗?如何做?
【问题讨论】:
【参考方案1】:据我所知,您不能直接限制最大内存。
但是,从 .NET 4 开始,如果 AppDomain.MonitoringIsEnabled
设置为 true
,则当前由 AppDomain
分配的内存在 AppDomain.MonitoringSurvivedMemorySize
属性中可用。您可以启动一个看门狗线程来监控分配情况。
【讨论】:
【参考方案2】:.NET 4.0 中似乎有针对此要求的解决方案
http://www.c-sharpcorner.com/UploadFile/hasansheik/diagnostic-and-performance-monitoring-in-dotnet-4-0/
【讨论】:
请详细说明您的答案,以防链接失效。 此链接指向只读属性。问题是如何设置这些值。【参考方案3】:即使是 Windows 性能监视器也不允许您查看 AppDomain 的 CPU 使用情况 - 因为 AppDomain 是 CLR 的逻辑结构,操作系统不知道唯一的 CPU 使用情况跟踪是在进程级别 - 如果我会感到震惊有一种方法可以限制您甚至无法监控的内容。
您想要这样做的具体原因是什么?为什么您不希望您的应用程序使用所有可用的资源?如果只是为了确保有足够的开销供其他进程运行,难道你不能将线程的优先级设置得非常低,然后让 Windows 调度程序来解决吗?
【讨论】:
【参考方案4】:我知道做这种事情的唯一方法是使用 HyperV(或类似产品)并将您的应用程序分区到不同的虚拟机中。但这并不是一个便宜或简单的解决方案。
【讨论】:
以上是关于AppDomain 的 CPU 和内存上限的主要内容,如果未能解决你的问题,请参考以下文章