代码之家  ›  专栏  ›  技术社区  ›  ta.speot.is

.NET Framework-每个应用程序开销

  •  3
  • ta.speot.is  · 技术社区  · 14 年前

    有人对使用.NET Framework 2.0/3.0/3.5的开销有什么具体的信息吗?

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

    如果我得到一个近似算法,那就太好了,例如每个实例10MB,而JIT则为50MB。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Hans Passant    14 年前

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

    托管代码往往比非托管代码(不能共享的代码)拥有更多的私有字节。这首先是由于JIT编译器的缘故,它在动态的地址生成机器代码,这对于一个进程和另一个进程来说是不一样的。装载机和垃圾收集堆往往有点结实。

    使用ngen.exe可以消除JIT编译器的开销。这就是为什么.NET框架程序集是共享的,当您在计算机上安装框架时,它们是被生成的。您不能对堆做任何事情,但在非托管代码中这并不是真正的不同。

    推荐文章