.NET框架-每个应用程序的开销

3

有没有关于使用.NET Framework 2.0/3.0/3.5的开销的具体信息?

我主要关心每个实例的开销,以及是否存在“固定成本”,无论实例数量如何,例如在运行300个.NET Framework应用程序实例的终端服务环境中,只有1个Just-In-Time编译器实例吗?

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

1个回答

2
它的工作方式与非托管代码完全相同。CLR、JIT编译器和.NET框架程序集是DLL,由运行托管代码的任何进程共享。它们的代码只加载一次到RAM中,所有进程将其虚拟内存页映射到该一份副本。
托管代码往往比非托管代码具有更多的私有字节,即不能共享的那种。首先,这是由于JIT编译器,它在不同的进程中生成机器代码的地址不同。此外,加载器和垃圾回收堆也倾向于有点庞大。
通过使用Ngen.exe,您可以消除JIT编译器的开销。这就是为什么.NET框架程序集是共享的,因为它们在安装框架时被Ngen-ed。您无法对堆做任何事情,但在非托管代码中也并不真正不同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接