我有两个引用同一个类库的 ASP.NET 网站。目前,我们使用两个类库副本发布该站点。这会浪费内存吗?操作系统是否知道文件的两个副本是相同的,因此可以为 DLL 的代码部分共享内存?如果我将它复制到 GAC 或另一个共享位置,这样它只是一个物理文件,它会映射更少的总内存吗?
问问题
649 次
2 回答
3
这个问题从错误的前提开始,ASP.NET DLL 不包含任何代码。只是数据、IL 和程序集清单。抖动从 IL 生成机器代码,该代码进入 AppDomain 的加载程序堆。进程的私有字节,不共享。
获取从 IL 生成的机器代码的一份副本是可能的,您必须运行 Ngen.exe。它预编译 IL 并生成本地 DLL,即存储在 GAC 子目录中的 .ni.dll。该代码只能与 RAM 中的一个副本共享。
于 2013-05-23T20:05:23.973 回答
0
进程和应用程序域必须将其加载到内存中才能正常运行。应用程序域和进程是沙盒的。
于 2013-05-23T19:27:30.017 回答