【问题标题】:CPU and Memory Cap for an AppDomainAppDomain 的 CPU 和内存上限
【发布时间】:2010-09-15 12:02:38
【问题描述】:

我想在 appdomain 中托管一个 exe,并为其分配 CPU 和内存上限,这样它就不会使用超过分配的处理能力。这可能吗?如何做?

【问题讨论】:

    标签: memory cpu appdomain


    【解决方案1】:

    据我所知,您不能直接限制最大内存。

    但是,从 .NET 4 开始,如果 AppDomain.MonitoringIsEnabled 设置为 true,则当前由 AppDomain 分配的内存在 AppDomain.MonitoringSurvivedMemorySize 属性中可用。您可以启动一个看门狗线程来监控分配情况。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 请详细说明您的答案,以防链接失效。
      • 此链接指向只读属性。问题是如何设置这些值。
      【解决方案3】:

      即使是 Windows 性能监视器也不允许您查看 AppDomain 的 CPU 使用情况 - 因为 AppDomain 是 CLR 的逻辑结构,操作系统不知道唯一的 CPU 使用情况跟踪是在进程级别 - 如果我会感到震惊有一种方法可以限制您甚至无法监控的内容。

      您想要这样做的具体原因是什么?为什么您不希望您的应用程序使用所有可用的资源?如果只是为了确保有足够的开销供其他进程运行,难道你不能将线程的优先级设置得非常低,然后让 Windows 调度程序来解决吗?

      【讨论】:

        【解决方案4】:

        我知道做这种事情的唯一方法是使用 HyperV(或类似产品)并将您的应用程序分区到不同的虚拟机中。但这并不是一个便宜或简单的解决方案。

        【讨论】:

          猜你喜欢
          • 2017-11-20
          • 2016-12-01
          • 2011-10-03
          • 2011-10-03
          • 2021-12-31
          • 1970-01-01
          相关资源
          最近更新 更多