1
2
它的工作方式与非托管代码完全相同。CLR、JIT编译器和.NET框架程序集是由运行托管代码的任何进程共享的DLL。在RAM中只加载一个代码副本,所有进程都将其虚拟内存页映射到该副本。 托管代码往往比非托管代码(不能共享的代码)拥有更多的私有字节。这首先是由于JIT编译器的缘故,它在动态的地址生成机器代码,这对于一个进程和另一个进程来说是不一样的。装载机和垃圾收集堆往往有点结实。 使用ngen.exe可以消除JIT编译器的开销。这就是为什么.NET框架程序集是共享的,当您在计算机上安装框架时,它们是被生成的。您不能对堆做任何事情,但在非托管代码中这并不是真正的不同。 |