gpt4 book ai didi

.net - 两个 .NET 进程何时可以共享 DLL 内存?

转载 作者:可可西里 更新时间:2023-11-01 11:33:46 27 4
gpt4 key购买 nike

我有两个引用同一个类库的 ASP.NET 网站。目前我们发布的网站有两个类库副本。这会浪费内存吗?操作系统是否知道文件的两个副本相同,因此可以共享 DLL 代码段的内存?如果我将它复制到 GAC 或另一个共享位置,使其只有一个物理文件,它会映射更少的总内存吗?

最佳答案

这个问题的前提是错误的,ASP.NET DLL 不包含任何代码。只有数据、IL 和程序集 list 。抖动从 IL 生成机器代码,该代码进入 AppDomain 的加载程序堆。进程的私有(private)字节,不共享。

获取从 IL 生成的机器代码的一份副本是可能的,您必须运行 Ngen.exe。它预编译 IL 并生成一个本地 DLL,一个存储在 GAC 子目录中的 .ni.dll。该代码只能与 RAM 中的一个副本共享。

关于.net - 两个 .NET 进程何时可以共享 DLL 内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16722214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com