【问题标题】:.NET Framework - Per Application Overhead.NET Framework - 每个应用程序开销
【发布时间】:2010-03-05 00:30:45
【问题描述】:

有人知道使用 .NET Framework 2.0/3.0/3.5 的开销吗?

我最感兴趣的是每个实例的开销以及是否存在“固定成本”,无论实例数量如何,例如在运行 300 个 .NET Framework 应用程序实例的终端服务环境中,是否只有 1 个即时编译器实例?

如果我能得到一个近似算法那就太好了,例如每个实例 10mb + JIT 50mb

【问题讨论】:

    标签: .net c++-cli terminal-services


    【解决方案1】:

    它的工作方式与非托管代码完全相同。 CLR、JIT 编译器和 .NET 框架程序集是由运行托管代码的任何进程共享的 DLL。他们的代码只有一份副本加载到 RAM 中,所有进程都将其虚拟内存页面映射到该副本。

    托管代码往往比非托管代码拥有更多的私有字节,非托管代码是无法共享的。这首先要归功于 JIT 编译器,它会在一个进程与另一个进程不同的地址处即时生成机器代码。加载程序和垃圾收集堆往往有点强大。

    您可以使用 Ngen.exe 消除 JIT 编译器开销。这就是共享 .NET 框架程序集的原因,当您在机器上安装框架时,它们是 Ngen-ed。你不能对堆做任何事情,但这在非托管代码中并没有什么不同。

    【讨论】:

      猜你喜欢
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 2017-08-15
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多